如果我为类创建的类别添加的方法也符合协议规定的合同,我想将该类别标记为实现协议,从而向Obj-C预处理器指示class也有效地实现了协议.
示例代表(为了清楚起见,感谢Ole!):
@protocol SomeDelegate <NSObject>
- (void)someDelegateMessage;
@end
Run Code Online (Sandbox Code Playgroud)
示例类别:
@interface NSObject (SomeCategory) <SomeDelegate>
- (void)someDelegateMessage;
@end
Run Code Online (Sandbox Code Playgroud)
并且具有其他典型的实现
@implement NSObject (SomeCategory)
- (void)someDelegateMessage {}
@end
Run Code Online (Sandbox Code Playgroud)
当我实际尝试这个时,我会收到每个NSObject方法的警告:
警告:类别'SomeCategory'的执行不完整
警告:找不到'-description'的方法定义
...
警告:找不到'-isEqual:'的方法定义
警告:类别'SomeCategory'没有完全实现'NSObject'协议
如果我<SomeDelegate>从声明中删除,工作正常,但当然NSObject不被识别为SomeDelegate