我是CFNotificationCenter的新手。我正在阅读developer.apple上的文档,它说在CallbackFunction中,观察者是“除了NULL之外的任意值,用于标识观察者”。观察者可以成为一个对象,以便我可以在回调函数中访问它的方法吗? 这些是文档中显示的参数。
void MyCallBack (
CFNotificationCenterRef center,
void *observer,
CFStringRef name,
const void *object,
CFDictionaryRef userInfo
);
另一个问题。为什么在添加观察者时允许观察者为nul?
void CFNotificationCenterAddObserver (
CFNotificationCenterRef center,
const void *observer,
CFNotificationCallback callBack,
CFStringRef name,
const void *object,
CFNotificationSuspensionBehavior suspensionBehavior
);
“观察者。在OS X v10.3及更高版本中,此参数可能为NULL。”
答案 0 :(得分:3)
observer
参数是一个传递给CFNotificationCenterAddObserver
的任意指针,它与你的回调指针一起存储。当通知中心调用您的回调时,它会将observer
指针作为参数传递给回调。
就是这样。通知中心不会取消引用observer
指针,或尝试保留它。如果需要,这是一种将额外信息传递给回调的方法。如果要使用它来引用Objective-C对象,则可以。您应该确保在观察者注册时不会释放该对象。