Objective-C协议代码详解

协议(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编程中用法广泛,使代码组织更加灵活,同时提供了松耦合的方式实现对象间交互。