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
上面的例子中只遵从了一个协议,也可以遵从多个协议,如果遵从多个协议,需要在尖括号里面提供多个协议名,名称之间以,隔开。
本文详细介绍了Objective-C中协议的概念,包括协议的定义、方法、继承及如何让类遵从协议,通过实例展示了如何定义和使用协议。
204

被折叠的 条评论
为什么被折叠?



