【发布时间】:2009-11-01 00:02:42
【问题描述】:
如果我为一个类创建的类别添加了也履行协议规定的合同的方法,我想将该类别类标记为实现该协议,从而向 Obj-C pre-处理器,该类也有效地实现了协议。
示例委托(为清楚起见,感谢 Ole!):
@protocol SomeDelegate <NSObject>
- (void)someDelegateMessage;
@end
示例类别:
@interface NSObject (SomeCategory) <SomeDelegate>
- (void)someDelegateMessage;
@end
还有一个典型的实现
@implement NSObject (SomeCategory)
- (void)someDelegateMessage {}
@end
当我实际尝试这个时,我会收到每个 NSObject 方法的警告:
警告:类别“SomeCategory”的实施不完整
警告:未找到“-description”的方法定义
...
警告:'-isEqual:' 的方法定义未找到
警告:类别“SomeCategory”未完全实现“NSObject”协议
如果我从声明中删除 <SomeDelegate> 可以正常工作,但当然 NSObject 不会被识别为 SomeDelegate
【问题讨论】:
标签: objective-c cocoa protocols categories