委托是面向对象语言中的一种设计模式,它允许对象"调用"未知代码来执行该对象本身无法有效执行的活动或计算.假设你有一个班级狗:
@protocol DogDelegate;
@interface Dog : Wolf <Domesticated>
- (void)bark;
- (void)tiltHeadAdorably;
- (void)playWithToy: (Toy *)aToy;
@property (readonly) Toy *favoriteChewToy;
@property (readwrite, assign) id <DogDelegate> delegate; // "DELEGATE" PROPERTY DECLARED HERE
@end
Run Code Online (Sandbox Code Playgroud)
委托对象通常由实例化的代码提供,并由该实例Dog调用以执行狗本身无法执行的操作.例如,考虑DogDelegate协议的这个接口,它定义了Dog委托对象应该做的事情:
@protocol DogDelegate <NSObject>
@required - (void)letDogOut: (Dog *)aDog;
@required - (void)letDogIn: (Dog *)aDog;
@optional - (void)scratchDog: (Dog *)aDog forTimeInterval: (NSTimeInterval)duration;
@end
Run Code Online (Sandbox Code Playgroud)
在这种情况下,一个实例DogDelegate通常是它的所有者Dog(并且,在Objective-C中,一个委托通常拥有一个对象,所以这与隐喻很好地对齐.)狗,当它需要出去...狗活动......将要求其代表执行该-letDogOut:方法,将狗放在后院.完成后,它会要求其代表执行该-letDogIn:方法,将狗带回内部.当狗想要感情时,如果它的代表能够,它将要求代表在一段时间内使用它-scratchDog:forTimeInterval:.
| 归档时间: |
|
| 查看次数: |
1056 次 |
| 最近记录: |