代码之家  ›  专栏  ›  技术社区  ›  saitjr

NSNotification“object”和“userInfo”之间有什么区别?

  •  7
  • saitjr  · 技术社区  · 9 年前

    两者之间有什么区别 NSNotification object userInfo ?

    当我发布带有参数的通知时,我可以使用 对象 userInfos 但我不知道这两种方式有什么区别。

    使用有什么好处吗 用户信息 ? 或正在使用 对象 足够地

    3 回复  |  直到 9 年前
        1
  •  3
  •   Midhun MP    9 年前

    这个 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

    发布通知的对象。

    用户信息

    有关通知的信息。可能为零。

    讨论

    此方法是发布通知的首选方法。

        2
  •  3
  •   Andrea    9 年前

    如果定义了一个对象,则可以过滤仅由该对象发送的通知。例如,如果注册通知,则将对象指定为 notificationSender 即使其他已发布通知的通知名称相同,也只能从该对象获得通知:

    - (void)addObserver:(id)notificationObserver
           selector:(SEL)notificationSelector
               name:(NSString *)notificationName
             object:(id)notificationSender
    

    这是来自Apple文档:

    notificationSender观察者需要其通知的对象 接收;也就是说,只有此发件人发送的通知 交付给观察员。

    如果你通过了nil,通知中心不会使用通知 发件人决定是否将其发送给观察者。

        3
  •  0
  •   Guillaume Algis    9 年前

    使用NSNotification对象时,您需要熟悉userInfo字典,该字典提供对接收者可能感兴趣的任何其他对象的访问。如果您对多个对象使用相同的通知,那么了解对象方法也可能会有所帮助。

    有关更多详细信息,请访问此链接。

    http://iosdevelopertips.com/cocoa/nsnotification-userinfo-and-object-methods.html