我有一个Xcode项目,Xcode 8.1(8B62)有两个目标,一个用于付费版本的应用程序,另一个用于免费版本。他们都管理遥控器推送通知。由于我使用新的框架UNUserNotificationCenter.framwork对iOS 10进行了更改,因此第一个目标的一切都很好,而第二个目标的链接错误。它使用旧方法在iOS 9下运行良好。我为两个目标做了什么:
这两个目标都是相同的代码。
不幸的是,对于第二个目标,我有以下错误:
架构arm64的未定义符号: “_OBJC_CLASS _ $ _ UNUserNotificationCenter”,引自: AppDelegate.o中的Objc-class-ref Ld:找不到建筑的符号 Clang:错误:链接器命令失败,退出代码为1(使用-v查看调用)
我已经完成了几次干净整洁的构建目标文件夹,重新启动Xcode,重新启动计算机但没有做任何事情。
在不同的论坛中找不到......
欢迎提供帮助。提前谢谢。
答案 0 :(得分:31)
您没有链接到UserNotifications.framework
。
UserNotifications.framework
如果没有:
答案 1 :(得分:2)
我有几乎完全相同的问题,有两个目标,一个用于免费版本,一个用于付费版本。
我强烈怀疑不同之处在于,对于一个目标,“启用模块”为YES(这是免费版本的目标,我正在为Admob执行@import),而对于另一个目标,“启用”模块“没有。就像魔术一样,我没有必须在Build Phases的“Link Binary with Libraries”中为“Enable modules”为YES的目标添加UserNotifications.framework。但是,对于“启用模块”为NO的目标,我得到了
Undefined symbols for architecture arm64: "_OBJC_CLASS _ $ _ UNUserNotificationCenter
它通过手动将UserNotifications.framework添加到“Link Binary with Libraries”而消失了。
所以也许规则是,当且仅当模块未启用时才需要这样做。
答案 2 :(得分:1)
确保UserNotifications.framework
Target > General > Linked Frameworks and Libraries