【发布时间】:2014-08-07 00:56:21
【问题描述】:
我有一个使用 Swift 编写的测试应用程序,我想针对 iOS 7。但是启用我需要添加的本地通知
application.registerUserNotificationSettings(UIUserNotificationSettings(forTypes: UIUserNotificationType.Sound
| UIUserNotificationType.Alert
| UIUserNotificationType.Badge,
categories: nil))
但是这个调用在 iOS 7 中不可用,所以我添加了
var version:NSString = UIDevice.currentDevice().systemVersion as NSString;
if version.doubleValue >= 8 {
// ios 8 code
}
ios 8 代码块仅在 iOS 8 下运行(已测试),但在 iOS 7 中运行应用程序时,我仍然得到 p>
dyld:未找到符号:_OBJC_CLASS_$_UIUserNotificationSettings 引用自:/var/mobile/Applications/AC73969D-1A4C-45AC-99CA-0B3982C1EE36/Timely.app/Timely 预期在:/System/Library/Frameworks/UIKit.framework/UIKit 在 /var/mobile/Applications/AC73969D-1A4C-45AC-99CA-0B3982C1EE36/Timely.app/Timely
我认为这是因为二进制文件包含 iOS 7 中不存在的 api 符号,但我该如何解决这个问题?
【问题讨论】:
-
什么时候看到这个错误?
-
当启动应用程序时,但我在应用程序委托中有这个块,代码在 ios 8 中工作并且没有错误删除 ios 7 中的块
-
您正在使用正确的 sdk 进行编译,不是吗?所以即使你在 iOS7 设备上启动这个应用,你也应该用最新的基础 sdk 编译它……
-
如果您将项目的目标更改为 iOS7 会发生什么?我猜(目前至少在测试版中)当你编译应用程序时,它会继续并将所有 iOS8 符号放入其中,当涉及到
dyld将 iOS7 上的所有内容链接在一起时,它会发现一大堆它不理解的 iOS8 主义。 -
afaik 如果部署目标不是 ios 7 或更低版本,您将无法在 ios 7 上进行部署