相关疑难解决方法(0)

类别可以同时实现协议吗?

如果我为类创建的类别添加的方法也符合协议规定的合同,我想将该类别标记为实现协议,从而向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

cocoa protocols objective-c categories

27
推荐指数
2
解决办法
7737
查看次数

标签 统计

categories ×1

cocoa ×1

objective-c ×1

protocols ×1