在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
应用程序的委托(官方资料) 监控应用程序的高级行为是应用程序委托对象的责任,而应用程序委托对象是您提供的定制类实例。委托是一种避免对复杂的UIKit对象(比如缺省的 应用程序的委托对象负责处理几个关键的系统消息。每个iPhone应用程序都必须有应用程序委托对象,它可以是您希望的任何类的实例,但需要遵循
协议仅仅声明方法,用作接口,本身并不实现,遵循该协议的类则负责具体实现。比如类B遵循协议test_protocol,则类B需实现该协议中声明的方法func;当类A需要执行方法func时,可以自己不实现func,而委托B实现。 Demo: 1 // 声明协议
2 @protocol TestProtocol<NSObject>
3 -(void)Print;
4 @end
5
6 @interface A : NSObject{
7 id<TestProtocol> _delegate;
8 }
9 @property(retain,nonatomic) id<TestProtocol> _delegate;
10 -(void)Start;
11 @end
12
13 @interface B : NSObject<TestProtocol>{
14 A* _test;
15 }
16 @property (retain,nonatomic)A* _test;
17 -(void)Print;
18 @end
1 @implementation A
2 @synthesize _delegate;
3
4 -(void)Start{
5 if (!_delegate) {
6 return;
7 }
8 [_delegate Print];
9 }
10
11 @end
12
13
14 @implementation B
15 @synthesize _test;
16
17 -(id)init{
18 if (self = [super init]) {
19 _test = [[A alloc] init];
20 _test._delegate = self;
21 }
22 return self;
23 }
24
25 -(void)dealloc{
26
27 }
28
29 -(void)Print{
30 NSLog(@"delegate-protocol_succeed");
31 }
32
33 @end
注:协议protocol有两个修饰符:@optional和@required。被@optional修饰的方法,在采用该协议的类中可以选择不实现,而采用@required修饰的方法,则必须实现。默认为@required。
Demo下载:https://files.cnblogs.com/pure/ProtocolDemo.zip |
请发表评论