不建议在Swift 4模式下使用Swift 3 @objc推论吗?

简要地说,在使用Xcode 9 Beta时,我遇到了以下警告:


不建议在Swift 4模式下使用Swift 3 @objc推断。请解决已弃用的@objc推断警告,启用“使用已弃用的Swift 3 @objc推断”日志记录来测试您的代码,并禁用Swift 3 @objc推断。**


经过研究,我仍然不知道如何解决该问题。我将不胜感激有关如何解决此问题的所有技巧以及对所发生情况的解释。


我的目标是更好地理解我的代码正在发生的事情。


交互式爱情
浏览 661回答 3
3回答

智慧大石

通过将目标的“ Swift 3 @objc Inference”构建设置更改为“ Default”,我摆脱了此警告。从这篇文章:在Swift 4之前,编译器自动将一些Swift声明提供给Objective-C。例如,如果从NSObject继承了一个子类,则编译器会为此类中的所有方法创建Objective-C入口点。该机制称为@objc推断。在Swift 4中,不建议使用这种自动@objc推断,因为生成所有这些Objective-C入口点的成本很高。当“ Swift 3 @objc Inference”设置设置为“ On”时,它将允许旧代码起作用。但是,它将显示需要解决的弃用警告。建议“修复”这些警告并将设置切换为“默认”,这是新Swift项目的默认设置。另请参阅此Swift提案。
打开App,查看更多内容
随时随地看视频慕课网APP