iOS错误:“在一个类别中采用协议时,”没有“id”的协议限定符是“过时的”

时间:2012-08-16 16:56:27

标签: ios protocols objective-c-category

我正在努力让一个类别采用一个协议,而我遇到的问题似乎很简单。

接口声明是:

@interface UIView (UIViewCategory) <DesiredProtocol> 

我假设实施声明应该是相同的:

@implementation UIView (UIViewCategory) <DesiredProtocol> 

但是这会在XCode中出现黄色警告,并显示消息:“没有'id'的协议限定符过时了。”

声明应该是:

@implementation UIView (UIViewCategory) id<DesiredProtocol> 

??

我找不到这个具体问题的参考。非常感谢所有回复。

2 个答案:

答案 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>{...}