我做了很多研究,但找不到我要找的东西:目前,我的应用程序的Deployment Target和Base SDK都被设置为10.8,并且运行得很完美。我可以正确地发布通知到山狮新通知中心!
为了构建同样在Mac 10.6下运行的应用程序,我已经将Deployment设置为10.6并构建了它(as recommended in this thread)。不幸的是,该应用程序在10.6上崩溃,崩溃报告详细说明了无法找到NSUserNotificationCenter (没有OS版本处理)。
--
所以我肯定要做的是,检查NSUserNotificationCenter类是否存在:
notificationCenterIsAvailable = (NSClassFromString(@"NSUserNotificationCenter")!=nil);并在这个布尔标志的基础上操作。
但是,不能基于此标志的代码呢,比如:
..: <NSUserNotificationCenterDelegate> {NSUserNotificationCenter *center的引用的类型?我的第一个想法是在运行时动态地更改类头,即根据类是否存在添加方法和属性来处理Notificaion中心,但是这看起来真的很复杂吗?!
发布于 2012-07-31 09:26:10
这些都是编译问题,而且在Base为10.8的时候都会很好。如果center不存在,则nil指针可以保留在NSUserNotificationCenter上,因此您可以使用该指针作为标志来检查是否正在执行通知,或者在测试后运行的代码中。
编辑--实际上,离开它-- nil将意味着您甚至不需要检查它;只要正常发送消息,如果指针是nil,它们将被忽略(除非创建消息的代价很高,并且您希望节省一些CPU周期)。
https://stackoverflow.com/questions/11736877
复制相似问题