Cocoa Touch的3种类的交流方式delegate/target/notification
1. Delegate
在Cocoa Touch类对象运行的周期中,某一个时间点它会去调用一些指定类的指定函数来完成他自身所要完成的功能。这个”指定的类”,就称为这个类的委托类。”指定函数”则是一些在协议(protocal)中完定义的方法。
比如UITableView,在它的运行周期中,它会调用委托类的一系列函数来完成对自身的初始化工作。我们需要做的,只是指定好它的委托类,并且在委托类中实现UITableView将要调用的委托方法。那我怎么知道UITableView要调用哪些方法呢?其实很简单,它所要调用的方法都定义在了协议类里面。在文档中可以找到,与UITableView相关的协议类的名字也都是以UITableView开头。其中定义的方法就是UITableView在运行周期中所要调用的一些方法。
2. Target
继承自UIControl的类,例如UIButton,可以设置当被触发某个事件时,去调用target对象的selector函数。
[UIButton addTarget: 目标对象名称 action:函数名称 forControlEvents:事件名称]
3. Notification
这种方式允许某个对象向消息中心发送消息,这些消息可能标有一些状态信息。另外一些对象可能会在消息中心监听带有某些状态消息的信息,从而做出相应。
NSNotification *ntf = [NSNotification notificationWithName:@"chgValue" object:self]; //声明一个消息,名称为chgValue,发送者是对象本身。 NSNotificationCenter *ntfCenter = [NSNotificationCenter defaultCenter]; [ntfCenter postNotification:ntf]; //获得消息中心的单例,将定义好的消息发送给消息中心。 NSNotificationCenter *ntfCenter = [NSNotificationCenter defaultCenter]; [ntfCenter addObserver:self selector:@selector(getNtf) name:@"chgValue" object:self]; [ntfCenter addObserver:self selector:@selector(getNtf2) name:@"chgValue" object:self]; //获得消息中心的单例,将来源是本对象,名称为chgValue的消息分发给本对象的getNtf和getNtf2函数。