黑马程序员——OC基础---协议
2015-10-10 21:26
351 查看
------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流!
----------
1 - 概念
一些方法的声明(注意:只是声明,没有实现!!同时也没有成员变量!!),一般写到一个.h的头文件中(command+n
->socre->->Objective-C File->File Type选择Protocol)。
方法分为两种:
1)
必须实现 关键字 @required 同时也是默认关键字
2)
选择实现 关键字 @optional
2 -
作用:
供其他的类去遵守
如果一个类或遵守了一个协议,就应该实现这个协议中定义的必须要实现的方法
3 -
定义:
@protocol 协议名 <NSObject> //默认情况下遵守 NSObject协议
//方法列表
@end
4 -
类遵守协议的格式:
1)
遵守一个协议:
先导入协议头文件
@interface类名 :NSObject <协议名>
@end
2)
遵守多个协议
@interface类名 :NSObject <协议名1,协议名2,...,协议名n>
@end
3)协议与协议的继承
如果你遵守了testTwoProtocol协议,那么methodA和methodB都需要实现。
NSObjct协议是基础协议,如果你的自定义协议不需要遵守其他的协议,如上例testOneProtocol,那么请遵守NSObject协议
4)协议被父类A遵守后被子类B继承
父类A遵守协议后实现协议必须实现的方法,这些方法可以被A的子类继承,A的子类可以调用或者重写父类准售的协议
类与协议的关系可以简单总结为三句话
1) 一个协议,可以遵守其他的协议
2) 一个类可以遵守多个协议
3) 一个协议可以被多个类遵守
5协议作为类型限定使用
第三种类型限制
----------
1 - 概念
一些方法的声明(注意:只是声明,没有实现!!同时也没有成员变量!!),一般写到一个.h的头文件中(command+n
->socre->->Objective-C File->File Type选择Protocol)。
方法分为两种:
1)
必须实现 关键字 @required 同时也是默认关键字
2)
选择实现 关键字 @optional
2 -
作用:
供其他的类去遵守
如果一个类或遵守了一个协议,就应该实现这个协议中定义的必须要实现的方法
3 -
定义:
@protocol 协议名 <NSObject> //默认情况下遵守 NSObject协议
//方法列表
@end
<span style="font-family:SimHei;font-size:18px;">@protocol testOneProtocol <NSObject> @required//必须实现的方法 -(void)methodA; @optional//可选择实现的方法 -(void)methodB; @end</span>
4 -
类遵守协议的格式:
1)
遵守一个协议:
先导入协议头文件
@interface类名 :NSObject <协议名>
@end
<span style="font-family:SimHei;font-size:18px;">#import <Foundation/Foundation.h> #import "testOneProtocol.h" @interface Girl : NSObject<testOneProtocol> @end</span>
2)
遵守多个协议
@interface类名 :NSObject <协议名1,协议名2,...,协议名n>
@end
<span style="font-family:SimHei;font-size:18px;">#import <Foundation/Foundation.h> #import "testOneProtocol.h" #import "testTwoProtocol.h" @interface Student : NSObject<testOneProtocol,testTwoProtocol> @end</span>
3)协议与协议的继承
<span style="font-family:SimHei;font-size:18px;">@protocol testOneProtocol <NSObject> -(void)methodA; @end @protocol testTwoProtocol <testOneProtocol> -(void)methodB; @end</span>
如果你遵守了testTwoProtocol协议,那么methodA和methodB都需要实现。
NSObjct协议是基础协议,如果你的自定义协议不需要遵守其他的协议,如上例testOneProtocol,那么请遵守NSObject协议
4)协议被父类A遵守后被子类B继承
父类A遵守协议后实现协议必须实现的方法,这些方法可以被A的子类继承,A的子类可以调用或者重写父类准售的协议
类与协议的关系可以简单总结为三句话
1) 一个协议,可以遵守其他的协议
2) 一个类可以遵守多个协议
3) 一个协议可以被多个类遵守
5协议作为类型限定使用
<span style="font-family:SimHei;font-size:18px;">Dog *d = [Dog new]; Girl *g = [Girl new]; //第一种类型限制 id<houseHold> obj; //增加<houseHold>以后,表示,obj只能赋值遵守了houseHold协议的对象 id<houseHold> obj = d; // 第二种类型限制: //表示,obj2在被赋值的时候,必须是遵守了houseHold协议的Girl对象. Girl<houseHold> *obj2 = g;</span>
第三种类型限制
<span style="font-family:SimHei;font-size:18px;">#import <Foundation/Foundation.h> #import "Dog.h" #import "houseHold.h" #import "caculatorProtocol.h" @interface Girl : NSObject<houseHold> //要求该实例变量必须是遵守了caculatorProtocol协议的Dog对象 @property (nonatomic,strong) Dog<caculatorProtocol> *dog; @end</span>
相关文章推荐
- 程序员的思维(转载于伯乐在线-author:水流年)
- 黑马程序员—Foundation框架之NSFileManager、NSNumber与NSDate
- 前端面试记录 阿里云前端 2015-10-10
- 一道关于排序算法的java面试题
- 软件测试面试相关问题
- 十道海量数据处理面试题与十个方法大总结
- iOS面试要点三
- 性能测试面试问题(一)
- 【互联网面试】朋友圈问题
- 黑马程序员——Java语言--面向对象(一)
- 程序员技术练级攻略
- 程序员累了怎么办?
- 面试题集锦
- 前端开发工程师面试题
- 一样是程序员,为什么你付出的汗水和想得到的成功不成正比
- 面试常见的功能测试考试题关于测试方法的
- 软件测试面试题 - 怎么测电梯?(测杯子/椅子/雨伞/电话)
- 程序员书单_架构设计篇
- 经营成功的测试职业生涯 ---(James A. Whittaker)(一)
- 经营成功的测试职业生涯 ---(James A. Whittaker)(二)