我做了很多研究,但我找不到我想要的东西:
目前,我的应用的Deployment Target
和Base SDK
都设置为10.8
,并且运行完美。我可以正确地将通知发布到Mountain Lions新通知中心!
要构建也在Mac OS 10.6
下运行的应用,我已将部署目标设置为10.6并构建它(as recommended in this thread)。不幸的是,应用程序在10.6崩溃了,崩溃报告详细说明找不到NSUserNotificationCenter(没有操作系统版本处理)。
-
所以我必须做的是检查NSUserNotificationCenter类是否存在:
notificationCenterIsAvailable = (NSClassFromString(@"NSUserNotificationCenter")!=nil);
并根据此布尔标志进行操作。
但是Code不能基于这个标志,比如:
..: <NSUserNotificationCenterDelegate> {
NSUserNotificationCenter *center
?我的第一个想法是在运行时动态改变类头,即根据类是否存在来添加处理Notificaion Center的方法和属性,但这看起来真的很复杂?!
答案 0 :(得分:3)
这些是编译问题,并且在Base SDK为10.8时一直很好。如果center
不存在,nil
指针可以保留在NSUserNotificationCenter
,因此您可以将其用作标记来检查您是否正在执行通知在测试后的代码中运行。
编辑事实上,离开它nil
意味着你甚至不需要检查它;只是正常发送消息,如果指针是nil
,它们将被忽略(除非创建消息很昂贵并且你想节省一些CPU周期)。