是否有一种方法可以指定NSNotifications的发送方/接收方的粒度



考虑以下示例:

  • 我有一个图书馆,里面有书,书有难度和类型
  • 每本书都是某个对象的实例,可以由视图控制器呈现(例如,集合视图,其中每个单元格都是一本书,可能是细节视图,其中只显示一本书)
  • 这些书的数据可以通过某种同步方法在后台进行更新。可能只有一本书更新,或者可能只有一种类型

我希望类(主要是视图)收到更新通知。我希望这些通知非常清楚。因此,当所有非小说类书籍都更新时,这是应该通知的。当然,我可以对每种类型使用单独的通知名称,但如果我们谈论的是整个库,包含数千个对象的大型集合视图将意味着注册太多的观察者。在这种情况下,观察者可能会选择接收任何关于书籍的通知,可能是任何一种类型的通知。

我在NSNotification中缺少(或者似乎无法弄清楚)某种粒度来指定这种需求。简而言之:

  • 有没有办法更具体地告诉NSNotification我想接收什么类型的通知/发送给谁
  • 或者,我可以将对象附加到通知吗?如果是这样的话,我可以在这个对象中对通知的范围(比如元数据)进行建模,并让接收者检查这些数据

是的,你可以这样做,只需指定你的对象,将你的元数据打包在字典中,并将你的通知附加为userInfo。然后使用这种方法发布通知:

- (void)postNotificationName:(NSString *)aName object:(id)anObject userInfo:(NSDictionary *)aUserInfo

然后你可以访问你的通知,比如:

- (void)handleNotification:(NSNotification *)noti{
NSDictionary *userInfo = [noti userInfo];
YourObject *object = [noti object];
}

最新更新