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
相关文章推荐
- 普通排序--冒泡排序
- 站长留言
- Beta版本冲刺计划及安排
- Bootstrap历练实例:分页状态
- Bootstrap历练实例:分页的大小
- css布局你该了解的
- Windows Server 2008 部署webservice(C# .Net)
- x86、ARM和MIPS三种主流芯片架构
- iOS开发笔记-UITableView的单选
- Oracle数据文件/控制文件/日志文件
- ping通网关 ping不能外网 DNS无法解析
- bootstrap 分页
- IOS开发笔记-UITableView的多选
- 图解javascript this指向什么?
- 频繁跳槽的面试一定会被压价!
- 添加删除程序无法安装IIS 提示没法加载模块
- iOS读取CSV文件
- APK Multi-Tool强大的APK反编译工具终极教程
- oracle执行计划sql
- php数据库访问变慢的一个原因