什么是CFNotificationCenter回调函数观察器?

时间:2012-08-07 03:15:07

标签: ios c macos core-foundation

我是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。”

1 个答案:

答案 0 :(得分:3)

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

就是这样。通知中心不会取消引用observer指针,或尝试保留它。如果需要,这是一种将额外信息传递给回调的方法。如果要使用它来引用Objective-C对象,则可以。您应该确保在观察者注册时不会释放该对象。