2

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

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

4

1 回答 1

4

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

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

于 2012-08-07T03:22:18.823 回答