protocol
- protocol是用来声明一些方法的,也就是说protocol是由一系列方法声明组成的
protocol语法格式
@protocol 协议名称
// 方法声明列表
@end
- 类遵守协议
- 一个类可以遵守一个或者多个协议
- 任何类只要遵守了protocol,就相当于拥有了protocol中所有方法的声明
@interface 类名:父类<协议名称1,协议名称2,......>
@end
protocol 和继承的区别
- 继承之后默认就有实现,protocol只有声明没有实现
- 相同类型的类可以使用继承,不同类型的类智能使用protocol
protocol的使用注意
- protocol只有一个用途,就是用来声明方法,不能声明成员变量,不能写实现
- 只要父类遵守了某个协议,那么子类也遵守
- OC是单继承,但是可以遵守多个协议
- 协议可以遵守协议,一个协议遵守另一个协议,就可以拥有另一个协议中的方法声明
基协议
- 基协议:NSObject,是最基本的协议
- 建议每一个新的协议都要遵守NSObject协议
@required和@optional关键字
- 这两个关键字用于程序员之间交流
- @required:这个方法必须要实现,若不实现,编译器发出警告
- @optional:这个方法不一定要实现
@protocol SportDelegate <NSObject>
@required
- (void)playFootball;
@optional
- (void)palyBasketball;
@end
代理设计模式
- 当A对象发生一些行为,想告知B对象(让B对象称为A对象的代理对象)
- 当B对象想监听A对象的一些行为(让B对象成为A对象的代理对象)
- 当A对象无法处理某些行为的时候,想让B对象帮忙处理(让B对象称为A对象的代理对象)