zoukankan      html  css  js  c++  java
  • 通知中心 NSNotificationCenter

    NSNotificationCenter

    通知中心提供了一种在程序内广播信息的途径,一个NSNotificationCenter对象本质上是一个通知分发表(notification dispatch table)。

    每一个运行中的Cocoa程序有一个默认的通知中心,一般不用自己创建。一个NSNotificationCenter对象仅仅可以在一个单独的程序中传送通知,如果想要在不同进程中发送、接受通知,使用NSDistributedNotificationCenter的实例。

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

    向接收者的分发表添加一条记录,后边两个参数可选。

    notificationObserver 作为观察者,不能为nil;

    notificationSelector sorry,翻译不清了。当接收者post通知时,观察者会执行这个参数指定的消息。

    notificationName 用于注册观察者的通知的名字,也就是说,只有用这个名字的通知被投递给这个观察者。如果传入nil,通知中心不用通知的名字决定是否把它投递给观察者。

    notificationSender 通俗的说,就是观察者愿意接收谁的通知。如果传入nil,通知中心不用通知的sender决定是否投递给观察者(shit,真绕,其实就是接收所有sender发送的通知,第三个参数也一样)。

    注意:务必保证在观察者dealloc前,调用removeObserver:name:object:来移除观察者。

    - (void)postNotification:(NSNotification *)notification

    给接收者post一个给定的通知。参数notification不能为nil。

    - (void)postNotificationName:(NSString *)notificationName
                          object:(id)notificationSender
                        userInfo:(NSDictionary *)userInfo

    notificationSender post通知的对象;

    userInfo 关于通知的信息,可以使nil。

    NSNotification

    NSNotification对象封装信息以便于NSNotificationCenter对象把它广播给其他对象。一个通知包含一个名字、一个对象和一个可选的字典。名字是用来识别通知的一个标识。这个对象是通知的poster想要发送给这个通知观察者的对象(一般,是这个对象post这个通知)。这个字典存储任何关联的对象。通知中心对象是不可变的。

    文章版权归个人所有,转载时请在文章显眼位置给出本文链接。
  • 相关阅读:
    【LeetCode】543. 二叉树的直径
    红色的眼睛黑色的心
    WinForm
    Windows地址栏的妙用
    C#
    WPF
    配置Notepad++万能调试
    盗取连接你wifi的人的qq
    Windows去除开始菜单图标背景
    解决Windows下文件无法删除的问题
  • 原文地址:https://www.cnblogs.com/xjshi/p/4353888.html
Copyright © 2011-2022 走看看