【发布时间】:2014-07-02 14:51:00
【问题描述】:
有没有办法告诉编译器非导入类(即前向声明)遵守协议?
在下面的示例中,我想在类 ForwardClass 上调用方法 foo。该类遵循MyProtocol 协议,但编译器不会知道这一点,因为使用了前向声明。
@protocol MyProtocol <NSObject>
+ (void) foo;
@end
@class ForwardClass; // <-- Forward declaration
@implementation MyClass
- (void) bar
{
[ForwardClass foo]; // <-- This doesn't work!
}
我希望的是在像这样声明类的同时应用协议:
@class ForwardClass <MyProtocol>
或者在调用方法时以某种方式使用协议:
[ForwardClass<MyProtocol> foo];
这并不是一个真正的大问题,因为我可以直接导入类,但如果它可以工作,那就太好了,因为我只需要导入协议,而不是整个类。
【问题讨论】:
-
首先,你的协议声明了实例方法,而不是类方法。
-
@Kreiri 我的错,当然应该是一个类方法。已编辑。
标签: objective-c protocols forward-declaration