协议(Protocol)在Objective-C中定义了方法和属性的模板,规定了遵循该协议的类或结构体需要实现的内容。协议可以让不相关的类遵循同一接口契约,用于减少代码重复、提高灵活性。
定义协议
使用@protocol定义一个协议:
@protocol Runnable
- (void)run;
@end
协议只定义接口,不包含实现。
遵循协议
类可以在<>中指明遵循某协议,然后实现协议定义的方法:
@interface Person : NSObject<Runnable>
- (void)run {
// 实现方法
}
@end
委托设计模式
委托设计模式利用协议实现对象之间的松耦合设计。一个对象将任务委托给遵循同一协议的其他对象去完成。
例如UIButton的点击事件处理常用委托模式,点击事件委托给delegate去处理。
检查是否遵循协议
可以使用respondsToSelector或conformsToProtocol检查对象是否遵循协议:
if ([obj conformsToProtocol:@protocol(Runnable)]) {
[obj run];
}
协议在Objective-C编程中用法广泛,使代码组织更加灵活,同时提供了松耦合的方式实现对象间交互。