OC_protocol协议介绍(1)

来源:互联网 发布:秦淮区网络问政 编辑:程序博客网 时间:2024/06/09 13:49

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


















0 0
原创粉丝点击