该技能围绕 Objective-C 的协议与分类两大特性展开,用于定义接口和扩展类行为。
用途:协议声明方法契约,供类采纳(adopt),实现多态与委托模式,类似 Java 接口或 Swift 协议;分类可在不继承、不访问源码的情况下为已有类添加方法,用于组织代码、扩展系统类、拆分庞大实现。
主要能力:正式协议支持 @required 与 @optional 方法及属性要求、多协议采纳、协议继承、协议作为类型(id<Protocol>)、用 conformsToProtocol: 检查一致性;可选方法调用前需用 respondsToSelector: 检查。分类支持添加实例方法与类方法(示例含 NSString、UIColor 分类)、用关联对象(objc_getAssociatedObject / objc_setAssociatedObject)模拟属性;类扩展(匿名分类)可声明私有属性、私有方法,并可在内部把只读属性改为读写。协议组合(id<A, B, C>)可表达精确类型要求。
使用方式:以 @protocol 声明协议,@interface 类名 <协议名> 采纳;分类写作 @interface 类名 (分类名),实现在对应 @implementation 中;类扩展写作 @interface 类名 (),通常放在 .m 文件。示例中出现 NSObject、NSArray、NSURLSession、UIKit 等框架类型。
限制:资料指出分类无法添加实例变量,只能添加方法并借助关联对象实现类似属性的行为;调用可选协议方法前必须检查是否实现。文本截断于 UserData 的 toDictionary 实现处,后续内容暂未提供。