使用Objective-C通常有三种方式实现回调:
Target-action:当某事件发生时,向指定的对象发送某个特定的消息。只做一件事时使用。
Helper objects:当某事件发生时,向遵循相应协议的辅助对象发送消息。代理和数据源是常见的辅助对象。功能较复杂是使用。
Notification:某个对象正在等待某些特定的通告,当其中的某个通告出现时,向指定的对象发送特定的消息。当某事件发生时,相关的对象会向通告中心发布通告,然后再有通告中心将通告转发给正在等待该通告的对象。要触发多个回调对象时使用。
Target-action
NSTimer使用就是这个机制。创建该对象时,要设定延时,目标和动作。在指定的延时时间后,该对象会向设定的目标发送指定的消息。
新建工程Callbacks,添加类Logger
#import <Foundation/Foundation.h>
@interface Logger : NSObject
- (void)sayOuch:(NSTimer *)t;
@end
#import "Logger.h"
@implementation Logger
- (void)sayOuch:(NSTimer *)t
{
NSLog(@"Ouch!");
}
@end
创建logger实例和NSTimer实例,指定当timer超时是,向logger发送sayOuch:消