0

我试图让一个类别采用一个协议,但我遇到了一个看起来很简单的问题。

接口声明为:

@interface UIView (UIViewCategory) <DesiredProtocol> 

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

@implementation UIView (UIViewCategory) <DesiredProtocol> 

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

那么声明应该是:

@implementation UIView (UIViewCategory) id<DesiredProtocol> 

??

我找不到此特定问题的参考。非常感谢所有回复。

4

2 回答 2

2

您不需要 @implementation 块上的协议列表,无论它是否是一个类别。

@implementation UIView (UIViewCategory)
...
@end
于 2012-08-16T17:20:13.347 回答
0

这就是你声明协议的方式

@protocol ProtocolName <NSObject>

//protocol methods

@end

后来是财产

@interface ProtocolClass: NSObject
{...}
@end 
@property (nonatomic, unsafe_unretained) id <ProtocolName> delegate;
//Synthesize it!

然后你采用它

@interface ClassThatAdoptsProtocol: NSObject <ProtocolName>{...}
于 2012-08-16T17:02:38.880 回答