什么是CFNotificationCentercallback函数观察者?

我是CFNotificationCenter的新手。 我正在阅读developer.apple上的文档,它说在CallbackFunction中,观察者是“非NULL的任意值来标识观察者”。 观察者是否可以成为一个对象,以便我可以在callback函数中访问它的方法? 这些是文档中显示的参数。

void MyCallBack ( CFNotificationCenterRef center, void *observer, CFStringRef name, const void *object, CFDictionaryRef userInfo ); 

另一个问题。 为什么添加观察者时允许观察者为零?

 void CFNotificationCenterAddObserver ( CFNotificationCenterRef center, const void *observer, CFNotificationCallback callBack, CFStringRef name, const void *object, CFNotificationSuspensionBehavior suspensionBehavior ); 

“观察者,在OS X v10.3及更高版本中,这个参数可能是NULL。”

observer参数是传递给CFNotificationCenterAddObserver一个任意指针,与您的callback指针一起存储。 当通知中心调用您的callback函数时,会将observer指针作为parameter passing给callback函数。

而已。 通知中心不取消引用observer指针,或尝试保留它。 如果您需要的话,您可以通过这种方式将额外的信息传递给callback。 如果你想用它来引用一个Objective-C对象,你可以。 您应该确保在观察者注册时不会释放对象。