我正在努力让一个类别采用一个协议,而我遇到的问题似乎很简单。
接口声明是:
@interface UIView (UIViewCategory) <DesiredProtocol>
我假设实施声明应该是相同的:
@implementation UIView (UIViewCategory) <DesiredProtocol>
但是这会在XCode中出现黄色警告,并显示消息:“没有'id'的协议限定符过时了。”
声明应该是:
@implementation UIView (UIViewCategory) id<DesiredProtocol>
??
我找不到这个具体问题的参考。非常感谢所有回复。
答案 0 :(得分:2)
您不需要@implementation块上的协议列表,无论它是否属于类别。
@implementation UIView (UIViewCategory)
...
@end
答案 1 :(得分:0)
这就是声明协议的方式
@protocol ProtocolName <NSObject>
//protocol methods
@end
后来它的属性
@interface ProtocolClass: NSObject
{...}
@end
@property (nonatomic, unsafe_unretained) id <ProtocolName> delegate;
//Synthesize it!
然后你采纳它
@interface ClassThatAdoptsProtocol: NSObject <ProtocolName>{...}