objective-c 委托与协议
2012-08-31 23:28
411 查看
协议会制定若干的接口,这些接口并不需要自己实现,由遵守这个协议的类来实现。1.协议的定义:
@protocol MyProtocol <NSObject> /* 若干接口(形式和类是一样的) */ -(void)function; @end一旦一个类被制定遵守这个协议,那么它就有责任去实现协议中的接口,不实现的话,xcode会给出警告。2.设置托管变量,这个变量放在触发协议的类中,也就是说这个类是决定调用协议接口的“时机”的
id<MyProtocol> delegate;3.触发协议.当你什么需要实现协议中的方法的时候,可以这样调用
[delegate function];4.遵守协议,这个类可以作为前面“触发协议的类”的“委托”类,他是帮助前者实现协议中的需求的
@interface Implclass:NSObject<MyProtocol>5.实现方法,在“委托类”的实现部分加入接口的实现
-(void)funciton { //do something }6.指派委托,需要将delegate赋值为Implclass具体例子:假如baby想吃奶,这时候需要妈妈,就将需求(协议),委托给妈妈来做,让妈妈来帮助
@protocol baby_request <NSObject> //吃奶 -(void)milk; @end //baby类 @interface Baby:NSObject { id<baby_request> somebody; } @property (nonatomic,assign) id<baby_request> somebody; //想吃奶 -(void)wantmilk; @end @implementation Baby @synthesize somebody; -(void)wantmilk { [somebody milk]; } @end //母亲类 @interface Mother:NSObject<baby_request> @end @implementation Mother //喂奶 -(void)milk { NSLog(@"feed milk "); } @end int main (int argc, const char * argv[]) { @autoreleasepool { // insert code here... NSLog(@"has a bady want milk"); Baby *baby = [[Baby alloc]init]; Mother *mother = [[Mother alloc]init]; [baby setSomebody:mother]; [baby wantmilk]; [baby release]; [mother release]; } return 0; }
From: http://www.cnblogs.com/z9train/archive/2012/07/16/2594281.html[/code]
相关文章推荐
- [转]详解Objective-C中委托和协议
- Objective-C 协议 简介 +委托的实现
- Objective-C中协议和委托
- Objective-C协议(protocol)和委托(delegate)的基本概念
- 详解Objective-C中委托和协议
- 详解Objective-C中委托和协议
- [ios]objective-c 协议和委托 (重点基础知识)
- Objective-C 协议 简介 +委托的实现
- Objective-C 协议简介+委托的实现
- 详解Objective-C中委托和协议
- Objective-C中委托和协议
- objective-c协议 委托
- 【Objective-C基础】委托、非正式协议、正式协议
- Objective-C 协议 简介 +委托的实现
- objective-c 协议和委托(转)
- Objective-C中协议和委托
- 【IOS 开发】Objective - C 面向对象高级特性 - 包装类 | 类处理 | 类别 | 扩展 | 协议 | 委托 | 异常处理 | 反射
- Objective-C中委托和协议详解
- Objective-C中协议和委托
- Objective-C 协议 简介 +委托的实现