Cocoa中的类经常使用一种名为委托(delegate)的技术,委托是一种对象,另一个类的对象会要求委托对象执行它的某些操作。常用的是,编写委托对象并将其提供给其他一些对象,通常是提供给Cocoa生成的对象。通过实现特定的方法,你可以控制Cocoa中的对象的行为。
通过下面的例子,可以更清楚地理解委托的实现原理。其中A对象需要把一些方法委托给其它对象来实现,例子中就是对象B,B实现了含A对象特定方法的协议ADelegate,从而可以在B中实现A委托的方法。
A类
@protocol ADelegate
- (void)aDelegateMethod;
……
@end
@interface A : NSObject {
……
id delegate;
}
@property (readwrite, assign)
id delegate;
……
@end
@implementation A
@synthesize delegate;
- (void)aMethod{
[delegate aDelegateMethod];
……
}
@end
B类
@interface B : NSObject
@end
@implementation B
- (id)init {
……
[[A sharedA] setDelegate:self];
}
- (void)aDelegateMethod{ //B中实现A委托的方法
……
}
…
@end