ios - 有没有办法指定 NSNotifications 的发送者/接收者的粒度?

标签 ios objective-c

考虑以下示例:

  • 我有一个有书的图书馆,书有难度和类型。
  • 每本书都是某个对象的一个​​实例,可以由 View Controller 呈现(即 Collection View ,其中每个单元格都是一本书,可能是仅显示一本书的详细 View )。
  • 这些书籍的数据可以通过某种同步方法在后台更新。有可能只更新一本书,或者可能只更新一种类型。

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

我在 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];
}

关于ios - 有没有办法指定 NSNotifications 的发送者/接收者的粒度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21087344/

相关文章:

iphone - cocos2D pushScene popScene

ios - 使用加密的 CoreData 实现时是否需要 shm 和 wal 文件?

ios - Objective-C 中选择器上的 EXC_BAD_ACCESS

iphone - iOS键盘点击用户偏好

iphone - Objective-C 宏重新定义

iphone - 从数组中删除重复项,比较其对象的属性

ios - 使用 Swift 3 拉动刷新和 Alamofire

ios - 平移手势设置边界

ios - 如何在推送表格 View 单元格时手动隐藏它?

objective-c - NSView 的边界与框架