Objective-C - protocol学习笔记
2015-09-13 19:32
411 查看
Objective-C - protocol学习笔记
有一些方法它们不属于任何的类,或者不是一个类必须具有的特性,把这些方法抽象出来构成一个集合,称为协议(protocol)。比如说定义一个类
BNRPerson用于表示人,人有身高、体重、肺活量这些属性,以及能够吃饭和睡觉这些方法。但是人扮演战士的角色时,他可以为自由而战,但是为自由而战并不是人必备的方法,因此将其抽象出来称为协议。比如定义协议
BNRPeopleRights来表示人类权益的集合,并将为自由而战设定为其方法,便定义了一个协议。协议就是一组方法的集合。
一个类若实现协议中定义的方法,则称为遵从(conform)该协议,比如
BNRPerson实现了
BNRPeopleRights中的为自由而战的方法,则称为遵从协议
BNRPeopleRights。
协议(protocol)定义
下面的代码定义了一个协议BNRPeopleRights,此协议有一个必须实现的方法
fightForFreedom。意味着遵从该协议的类必须实现该方法。
协议也可以继承,比如
BNRPeopleRights继承了
NSObject,但是继承语法与类继承语法不同。
@protocol BNRPeopleRights <NSObject> @required - (void)fightForFreedom; @optional @end
遵从协议(protocol)
下面的类BNRPerson遵从了协议
BNRPeopleRights。
#import "BNRPeopleRights.h" // 遵从协议BNRPeopleRights @interface BNRPerson : NSObject <BNRPeopleRights> // 使用property使得编译器自动生成访问器 // 指明属性和类型 @property (nonatomic, readwrite) float heightInMeters; @property (nonatomic) int weightInKilos; // 身体质量指数 - (float)bodyMassIndex; @end
上面的例子中只遵从了一个协议,也可以遵从多个协议,如果遵从多个协议,需要在尖括号里面提供多个协议名,名称之间以
,隔开。
相关文章推荐
- 【IOS 开发学习总结-OC-7.5】objective-c 的c语言特性——结构体
- Objective-C 【NSMutableString】
- Objective-C 【NSArray 的基本使用&常见方法&简写形式】
- Objective-C学习-数组排序问题
- Objective-C - OC访问器学习笔记
- Object-API-NSLog
- 'dict' object has no attribute 'has_key'
- 【IOS 开发学习总结-OC-7.4】objective-c与c语言的预处理
- java学习之Object类常用方法
- 基础学习day08---多态、简单工厂、Object类equals和toString
- 黑马程序员——Objective--C笔记之协议
- JS 对象(Object)和字符串(String)互转
- Objective-C 成员变量
- 1.Objective-C基础学习
- Objective-C中的instancetype和id区别
- Object类中equals()的应用
- objective-c中汉字字符串进行比较
- new一个Object对象占用多少内存?
- Objective-C,类簇详解Foundation框架中的类簇
- iOS基础知识:Objective-C 之 通知(Notification)