dyld:找不到符号:尝试在iOS7上运行时_OBJC_CLASS_$_UIUserNotificationSettings [重复]
Posted
技术标签:
【中文标题】dyld:找不到符号:尝试在iOS7上运行时_OBJC_CLASS_$_UIUserNotificationSettings [重复]【英文标题】:dyld: Symbol not found: _OBJC_CLASS_$_UIUserNotificationSettings when trying to run on iOS7 [duplicate] 【发布时间】:2014-08-23 11:53:15 【问题描述】:我正在使用 Swift。我正在尝试向用户询问权限。
我正在使用此代码来询问用户权限:
application.registerUserNotificationSettings(UIUserNotificationSettings(forTypes: UIUserNotificationType.Sound | UIUserNotificationType.Alert | UIUserNotificationType.Badge, categories: nil))
此代码在 ios8 模拟器上运行良好
但是当我尝试在 iOS7 的 iPad 2 上构建和运行我的应用程序时,我的应用程序崩溃并显示消息
dyld:未找到符号:_OBJC_CLASS_$_UIUserNotificationSettings 引用自:/var/mobile/Applications/07D5D4BE-E6A3-43EE-ABEB-E9A1E4658F75/MyFirstApp.app/MyFirstApp 预期在:/System/Library/Frameworks/UIKit.framework/UIKit 在 /var/mobile/Applications/07D5D4BE-E6A3-43EE-ABEB-E9A1E4658F75/MyFirstApp.app/MyFirstApp (lldb)
在 Obj-C 中请求用户权限,我们使用
[application registerForRemoteNotificationTypes:UIRemoteNotificationTypeBadge|UIRemoteNotificationTypeAlert|UIRemoteNotificationTypeSound];
但在 swift 中 application
对象没有名为 registerForRemoteNotificationTypes
的方法
有什么想法吗?请帮忙。
【问题讨论】:
【参考方案1】:UIUserNotificationSettings
仅适用于 iOS 8。所以你必须这样做:
if NSClassFromString("UIUserNotificationSettings") != nil
// Do the things in iOS 8 way.
else
// Do the things in iOS 7 way.
上面的代码在 iOS 7 上曾经崩溃,但这个问题应该在 Beta6 中修复。
【讨论】:
是的,我知道UIUserNotificationSettings
仅在 iOS8 中可用。 iOS7的方式怎么做?
'registerForRemoteNotificationTypes' 在 Swift 中为我工作。 UIApplication.sharedApplication().registerForRemoteNotificationTypes(.Badge | .Alert | .Sound)以上是关于dyld:找不到符号:尝试在iOS7上运行时_OBJC_CLASS_$_UIUserNotificationSettings [重复]的主要内容,如果未能解决你的问题,请参考以下文章
dyld:找不到符号:__ZN2cv6imreadERKNSt3 在 MAC OS 10.10 上运行简单代码时
dyld:惰性符号绑定失败:找不到符号:_objc_loadWeak
Xcode - dyld:找不到符号:__vtcOnSessionStart