2016-04-15 77 views
0

我正在寻找将我的Objective-c应用程序委托从Swift应用程序委托中取代。我已经在Swift中转换了大量的代码,希望最终能够隐藏App-Delegate。我一直在研究互联网,并没有找到任何实际的具体信息去实现这一点,所以我想这可能会有助于创建一个有关该主题的StackOverFlow问题。看起来我可以从X代码中的File-> New file菜单创建一个新的应用程序委托。但我的问题是编译器如何知道选择Swift App-Delegate VS Objective-C App-Delegate?我查看过构建设置,还没有发现任何指向此代理的内容(除构建阶段外)。任何帮助将不胜感激。谢谢!换掉应用程序委托objective-c文件并用swift App委托代替?

+0

更容易开始一个新的目标,迅速并从那里工作。您不应该将同一个类的.m和.swift链接到同一个目标,否则您将从编译器中获得重复的符号错误。看看这个[链接](https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/Migration.html) – Bamsworld

回答

0

假设此项目构建为Objective-C项目,您应该有一个main.m文件,其中包含对UIApplicationMain的调用。该调用中的最后一个参数指定应用程序委托类名称。

0

在Obj-C文件中main.m是程序的输入点。在这个文件中,你知道哪些类将通过调用函数UIApplicationMain是应用程序的委托:

UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 

在斯威夫特可以使用@UIApplicationMainattribute您AppDelegate类指示输入点和委托类。或者你可以创建main.swift文件。

在同一个项目中,您不能同时拥有main.mmain.swift(或具有@UIApplicationMain属性的应用程序委托类)。在这种情况下,你会得到链接错误。

因此,切换到您的应用程序委托的Swift实现,你需要用属性标记它,然后删除旧的Obj-C类和main.m文件。或者您需要在main.m文件中指定新类。