NSNotification
的{{1}}和object
之间有什么区别?
当我发布带参数的通知时,我可以使用userInfo
或object
来执行此操作。但我不知道这两种方式之间有什么区别。
使用userInfos
有什么好处吗?或者正在使用userInfo
?
答案 0 :(得分:3)
object
表示发布通知的对象。 userInfo
包含接收对象/函数的附加信息/数据。
根据NSNotificationCenter Class Reference:
postNotificationName:object:userInfo:
创建具有给定名称,发件人和信息的通知 将其发布给接收者。
声明
<强>夫特强>
func postNotificationName(_ notificationName: String, object notificationSender: AnyObject?, userInfo userInfo: [NSObject : AnyObject]?)
<强>目标C 强>
- (void)postNotificationName:(NSString *)notificationName object:(id)notificationSender userInfo:(NSDictionary *)userInfo
参数
notificationName
通知的名称。
notificationSender
发布通知的对象。
userInfo
有关通知的信息。可能是零。
讨论
此方法是发布通知的首选方法。
答案 1 :(得分:2)
如果您定义了一个对象,则可以过滤仅由该对象发送的通知。例如,如果您注册了通知,将对象指定为notificationSender
,即使通知名称与其他发布的通知相同,您也只能从该对象获得通知:
- (void)addObserver:(id)notificationObserver
selector:(SEL)notificationSelector
name:(NSString *)notificationName
object:(id)notificationSender
这是来自Apple doc:
notificationSender观察者想要通知的对象 受到;也就是说,只有此发件人发送的通知才是 交付给观察员。
如果您通过nil,通知中心不会使用通知 发送者决定是否将其传递给观察者。
答案 2 :(得分:0)
使用NSNotification对象时,您需要熟悉userInfo字典,该字典提供对接收者可能感兴趣的任何其他对象的访问。如果您在多个对象上使用相同的通知,那么理解对象方法可能会有所帮助。
有关详细信息,请访问此链接。
http://iosdevelopertips.com/cocoa/nsnotification-userinfo-and-object-methods.html