[英]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.m
和main.swift
(或具有@UIApplicationMain
属性的应用程序委托类)。 在这种情况下,您将收到链接器错误。
因此,要切换到应用程序委托的 Swift 实现,您需要使用属性对其进行标记,然后删除旧的 Obj-C 类和main.m
文件。 或者您需要在main.m
文件中指定新类。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.