繁体   English   中英

将 App Delegate 从 Objective-C 换成 Swift?

[英]Swap out App Delegate from Objective-C to Swift?

我希望将我的 Objective-c App 委托替换为 Swift App-Delegate。

我已经在 Swift 中转换了大量代码,希望最终隐藏 App Delegate。

我一直在互联网上进行研究,但还没有找到任何真正具体的信息来实现这一目标,因此我认为创建有关该主题的 StackOverFlow 问题可能会有所帮助。

看起来我可以从 Xcode 中的 File -> New File 菜单创建一个新的 App Delegate。

但是编译器如何知道选择 Swift App Delegate 还是 Objective-C App Delegate?

我在构建设置中环顾四周; 还没有真正发现任何指向这个委托的东西(除了构建阶段)。

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

在 Obj-C 文件中, main.m是程序的输入点。 在此文件中,您可以通过调用UIApplicationMain函数来判断哪个类将成为应用程序委托:

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

在 Swift 中,您可以为 AppDelegate 类使用@UIApplicationMain 属性来指示输入点和委托类。 或者你可以创建main.swift文件。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM