您的位置:首页 > 其它

OC_protocol协议介绍(1)

2015-11-26 09:21 323 查看

1 protocol的概念

java中有interface接口这个概念,接口就是一堆方法的声明没有方法的实现,而在OC里面,Interface是一个类的头文件的声明,并不是java中接口的意思。但是OC中也有接口这种用法,是由一个叫做协议的Potocol来实现的。
java中接口声明的方法,如果一个类实现了这个接口,就必须实现这个接口的所有方法。而OC可以在protocol中声明一些选择实现的方法。@requird, @optional。

2 protocol的基本使用

. 定义协议:
@protocol Run <NSObject> (协议默认要采纳NSObject的协议)
@required
- (void) eat;

@optional
- (void) run;
@end

采纳协议: (采纳协议要先把需要采纳的协议引入过来)
#import "Run.h"
@interface Person :NSObject<Run>
@end

实现协议中的方法:
#import "Person.h"
@implementation Person
- (void) eat{ //必须要实现的方法
NSLog(@"eat....");
}

- (void) run{//选择实现的方法
NSLog(@"run...");
}
@end

3 protocol的使用注意

1) protocol:就一个用途,用来声明一大堆的方法(不能声明成员变量),不能写实现
2) 只要某个类遵守了这个协议,就拥有了这个协议中所有方法的声明
3) 只要父类遵守了某个协议,那么子类也遵守
4) OC不能多继承,但是可以遵守多协议 继承(:) 协议(< >)
5) 基协议: <NSObject> 是基协议,是最根本最基本协议,其中声明了很多最基本的方法。
6) 协议可以遵守协议,一个协议遵守了另一个协议,就可以拥有另一份协议中的方法声明。

4 protocol类型限制

情景:想找一个会做饭,会洗衣服的女朋友

houseHold.h
@protocol houseHold<NSObject>

-(void) zuoFan;
- (void) xiyifu;

@optional
- (void) job;
@end

1) 使用id存储对象时,对象的类型限制

//这样写,表示只要是个人都满足条件,不满足题意
id girlFriend = [[Person alloc] init];

//下面写法表示,赋值给girlFriend的对象必须采纳了houseHold协议
//如果不满足则给出警告

2)对象赋值时类型限制

3)对象关联关系下,对象的类型限制
情景: 人拥有一条会算数的狗

dogProtocol.h
@protocol dogProtocol <NSObject>
- (void) mod;
@end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: