【发布时间】:2016-02-11 15:39:37
【问题描述】:
我正在编写一个 SDK 并寻找通过 NSNotification 发送对象的最佳实践。
Apple 和包括this 在内的一些线程表明postNotificationNamer 中的object 参数应该是通知的发送者,在大多数情况下,self。您的自定义对象应通过 userInfo NSDictionary 传递。来自 Apple 文档:
使用给定的名称、发送者和信息创建通知并将其发布给接收者。
例如,不恰当的做法是:
[[NSNotificationCenter defaultCenter] postNotificationName:@"myNotification"
object:myObject];
推荐的方式是:
NSDictionary* userInfo = @{@"myMessage": myObject};
[[NSNotificationCenter defaultCenter] postNotificationName:@"myNotification"
object:self
userInfo:userInfo];
这两种方法我都试过了,都很好用。问题是,使用以前的方法有风险吗?就我而言,我对通知的发送者不感兴趣,但使用后一种方法会在我要发送的实际对象周围引入一个额外的包装器 (NSDicionary)。
【问题讨论】: