协议不可见

时间:2013-02-24 17:42:34

标签: objective-c

在FeedbackTarget.h中:

@protocol FeedbackTarget <NSObject>
@property (nonatomic, retain) Feedback *feedback;
- (void)someMethod;
@end

在FeedbackViewControllerTests.m中:

#import "FeedbackTarget.h"
...
- (void)setUp
{
  [super setUp];
  self.feedbackTarget = [OCMockObject mockForProtocol:FeedbackTarget];
}

为什么我会收到错误:使用未声明的标识符'FeedbackTarget'?

2 个答案:

答案 0 :(得分:6)

好的,不应该吗?

  self.feedbackTarget = [OCMockObject mockForProtocol:@protocol(FeedbackTarget)];

答案 1 :(得分:0)

 self.feedbackTarget = [OCMockObject mockForProtocol:FeedbackTarget];

此处发送到OCMockObject的对象称为FeedbackTarget。但是没有对象“FeedbackTarget”。当然,这是协议的名称,但它不是一个对象。

正如Odrakir指出的那样,你需要传递@protocol(FeedbackTarget)。类似地,当将选择器传递给对象时,传递@selector(theSelector:不是裸选择器。