Notification和Delegates

看这里

Notification

通知(Notifications)提供了一种从任何地方向任何地方广播消息的方法。Objective-C中的NSNotification类就能实现这样的功能。严格地说,它不是语言的一部分,二是Foundation框架的一部分。但是,你在使用Objective-C时,几乎不可能不使用Foundation。NSNotification的实例通过一个NSNotificationCenter进行广播。

通知包含一个name、一个object和一个元数据字典。object和元数据是可选的,name是必需的。object可以通过向通知中心注册来接受某种通知,这些通知通过name、object或者name和object一起来进行过滤匹配。另外,可以传递一个selector,这样当通知匹配时可以调用。

一个示例代码如下:

//从一个对象注册为观察者
[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(thingHappened:)
                                             name:MyThingHappened
                                           object:_myObject];

//从另一个对象发送通知
[[NSNotificationCenter defaultCenter] postNotificationName:MyThingHappend
                                                    object:self
                                                  userInfo:nil];
在这个例子中,一个对象将自己注册为观察者,来接收MyThingHappened通知,并且限制接受对象为_myObject来的该通知。然后,另外一个对象提交通知,将自己作为object,没有元数据(userInfo)。这种情况下,如果提交该通知的的对象是来自注册过的对象上下文中的_myObject,那么该通知将触发thingHappened:调用。

Delegates

delegate定义了一个接口,通过该接口,两个对象之间可以进行交互。在Objective-C中,这常常通过使用@protocol语法的形式化协议来实现。在delegate场景中,一个对象是delegate,另一个对象是delegator。delegator会引用它的delegate,这通过delegator调用低音在delegate协议中的某个方法来发送消息实现。一个示例是在用户接口中的按钮,可以有一个delegate处理按钮点击事件通知。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值