如何在操作系统早于 iOS 4 的设备上忽略 UILocalNotification?
Posted
技术标签:
【中文标题】如何在操作系统早于 iOS 4 的设备上忽略 UILocalNotification?【英文标题】:How do I ignore UILocalNotification on devices with OS's older than iOS4? 【发布时间】:2010-08-22 16:18:43 【问题描述】:我正在制作的应用中使用本地通知。
我用这个:
Class myClass = NSClassFromString(@"UILocalNotification");
if (myClass)
//Local Notification code
在不支持时避免使用 UILocalNotifications。
但我的应用程序在启动时崩溃并显示此错误代码:
警告:无法读取符号 “/库/MobileSubstrate/MobileSubstrate.dylib” (文件未找到)。 dyld:符号不是 成立: _OBJC_CLASS_$_UILocalNotification 引用自: /var/mobile/Applications/FCFFFCB2-A60B-4A8D-B19B-C3F5DE93DAD2/MyApp.app/MyApp 预计在: /System/Library/Frameworks/UIKit.framework/UIKit
临时数据格式化程序 不可用,过一会再试 '继续'。 (调用 dlopen 不安全 此时。) mi_cmd_stack_list_frames:不够 堆栈中的帧。 mi_cmd_stack_list_frames:不够 堆栈中的帧。
如何防止这种情况发生?
【问题讨论】:
【参考方案1】:正确的做法是:
Class localNotificationClass = NSClassFromString(@"UILocalNotification");
if (localNotificationClass != nil)
// The UILocalNotification class is available
UILocalNotification* localNotification =
[[localNotificationClass alloc] initWith....];
您可以不使用[UILocalNotificationClass alloc]
,因为当您的代码在该类不可用的旧ios 上加载时,这会导致链接错误。而这正是你想要阻止的。
顺便说一句:那些 MobileSubstrate 错误是您越狱手机时得到的:一个不可预测/未定义的开发平台 :-)
【讨论】:
嘿嘿好的。迫不及待想用 iPhone 4 替换我的 2g。无需解锁和越狱。【参考方案2】:没关系.. 我用过:
Class myClass = NSClassFromString(@"UILocalNotification");
if (myClass)
//Local Notification code
UILocalNotification *notification = [[myClass alloc] init];
代替:
Class myClass = NSClassFromString(@"UILocalNotification");
if (myClass)
//Local Notification code
UILocalNotification *notification = [[UILocalNotification alloc] init];
它成功了!
已编辑清除!
【讨论】:
它适用于 iOS4,但在旧版本上会失败。看我的回答。 但是在旧设备上,IF 语句会是假的,所以代码不会被执行。还是不是这样? 对不起应该更清楚,但这是在里面: Class localNotificationClass = NSClassFromString(@"UILocalNotification"); if (localNotificationClass != nil) block.. 所以我基本上和你一样做 st3fan。 @Tom Irving 虽然它没有在旧设备上执行 [[UILocalNotification alloc] init];部分使它崩溃.. 你不能做那种分配,因为就像 St3fan 说的那样,它会导致链接器错误。而是做 [localNotificationClass alloc]以上是关于如何在操作系统早于 iOS 4 的设备上忽略 UILocalNotification?的主要内容,如果未能解决你的问题,请参考以下文章
UIDocumentBrowserViewController 忽略 iOS13 设备上的文档类型(com.apple.pkpass)
SOAP Web 服务不仅适用于 IOS 设备,它还适用于 soap ui 和 Android 设备