NSNotification'对象'之间的区别是什么?和' userInfo'?

时间:2015-02-16 10:02:28

标签: ios nsnotification

NSNotification的{​​{1}}和object之间有什么区别?

当我发布带参数的通知时,我可以使用userInfoobject来执行此操作。但我不知道这两种方式之间有什么区别。

使用userInfos有什么好处吗?或者正在使用userInfo

3 个答案:

答案 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