Mac 上的其他Notification Center
在iOS 上面我们通常只会用到NSNotificationCenter,特别是NSNotificationCenter 的defaultCenter:不过,在Mac OS X 上,我们还有其他的notification center 可以使用。
NSDistributedNotificationCenter
苹果在iOS 上的限制较为严格,一直以来都想办法禁止跨App 之间的通讯(IPC,Inter-Process Communication)。不过自从Mac OS X 出现以来, Cocoa Framework 就有Distributed Objects 这套IPC 机制,让不同App 之间可以传递Objective-C 实例,后来更推出了XPC,可以在不同App 之间传递block。
NSDistributedNotificationCenter 就是在Distributed Objects 技术上建立的notification center,也就是,如果你对NSDistributedNotificationCenter 发送了通知,便可以让其他的App 收到来自你目前所在App 送出的通知。
NSWorkSpace 的Notification Center
NSWorkSpace 这个控件在Mac 上代表的是Mac 的桌面环境。如果你想要要求Mac OS X 开启另外一个App,处理某个档案或URL(在iOS 上我们会要求UIApplication 来openURL:,但是在Mac 上则是交由NSWorkSpace 处理),或是取得某个档案在Finder 里头的代表图示…等,就会用到NSWorkSpace。
跟NSWorkSpace相关的通知,像是某个App是否被成功开启、你的Mac电脑是否离开了休眠…等等,都不会透过NSNotificationCenter的defaultCenter,而是要透过[[NSWorkSpace sharedWorkspace] notificationCenter]
这边的notification center,我们要选择正确的notification center做add observer,才能正确收到通知。