“UIApplicationMain”属性不能在包含顶级代码的模块中使用
所有的suden我在我的AppDelegate中得到了这个错误:
“’UIApplicationMain’属性不能在包含顶级代码的模块中使用”
在它所说的行:@UIApplicationMain
现在项目无法建立。 我正在使用Swift和Xcode 6.2。 我已经尝试删除派生数据文件夹,甚至使用最新的Xcode 6.3 beta,这是我第一次创建项目的地方。
我不知道发生了什么,我到处搜寻都没有运气。 谢谢
好的,我终于自己解决了。 似乎有另一个文件埋在我添加的库中,名为main.swift,这与我的AppDelegate冲突。 我删除了它,问题就消失了。
Apple文档,Swift /“文件和初始化” :
之前我们说大多数应用的源文件都不允许使用顶级代码。 例外是一个名为“main.swift”的特殊文件,其行为与操作文件非常相似,但是使用您应用的源代码构建。 “main.swift”文件可以包含顶级代码,并且依赖于顺序的规则也适用。 实际上,在“main.swift”中运行的第一行代码被隐式定义为程序的主要入口点。
项目中的某些文件使用顶级表达式,即任何函数或块之外的语句。 这只能在一个名为“main.swift”的文件中使用。
在Xcode中,Mac模板默认包含“main.swift”文件,但对于iOS应用程序,新iOS项目模板的默认设置是将@UIApplicationMain添加到常规Swift文件中。 这会导致编译器为您的iOS应用程序合成一个主入口点,并且不需要“main.swift”文件。
如果您的项目使用@UIApplicationMain
,则您的项目不能具有顶级表达式。 (根据我对XCode 8.2.1的经验,似乎它甚至不能有一个名为“main.swift”的文件,尽管我找不到这样的引用。)
这解释了为什么从项目中删除流氓main.swift文件会使错误消失。
同样的情况发生在一个包含main.swift的库中…删除那个并解决了问题。
- 在我的子项目中使用第三方框架(Alamofire)(CocoaTouch框架)
- Iphone像素失真,同时缩放Paint应用的OpenGL ES内容
- UIViewanimation在视图顶部与轴交替
- 如果一个UITableViewCell有多个button,哪里是处理触摸事件的最佳位置
- 无法为版本化模型创build包文件夹?
- 未find'FBSDKLoginKit / FBSDKLoginKit.h'文件(Facebook SDK for iOS v4.2&Xcode 7)
- 如何在同一视图中使用具有不同数据源的多个选择器视图?
- HealthKit数据在后台无法访问
- 使用ExtAudioFileWrite for iOS将audio采样的缓冲区写入aac文件