当我尝试调用实现特定协议的类的实例时,我收到有关在协议签名中找不到该方法的警告。
警告: '-requestCompleted:requestType:'not 在协议警告中找到: 'NSObject'可能无法回应 '-requestCompleted:的RequestType:
我无法看到此警告的原因,因此我将这些类复制到一个单独的项目中而不进行任何更改。当我构建新项目时,不会生成任何警告。
当我在原始项目中执行代码时,一切正常 - 只是在构建期间显示警告,我希望它们消失。
我已经尝试清理构建目标并删除构建目录中的文件。我没有看到什么导致警告?
//文件一
@protocol ResponseProtocol
- (void)requestCompleted:(NSDictionary *)responseData requestType:(ConnRequestType)lastRequestType;
@end
我如何称呼它:
@interface BaseClass : NSObject
__weak NSObject <ResponseProtocol> *delegate;
}
- (void)doSomething;
@end
@implementation BaseClass
- (void)doSomething
{
SEL aSelector = @selector(requestCompleted:requestType:)
if ((delegate != nil) && [delegate respondsToSelector:aSelector])
{
ConnRequestType aRequestType = ...;
NSDictionary *aResponseData = [NSDictionary dictionary];
// the following line generates the warnings:
[delegate requestCompleted:aResponseData requestType:aRequestType];
}
}
@end
答案 0 :(得分:4)
确保在BaseClass.h文件中导入正确的头文件:
#import "ResponseProtocol.h"
答案 1 :(得分:0)
您是否尝试过id <ResponseProtocol> delegate
代替NSObject <ResponseProtocol> *delegate
?它似乎是Obj-C文档中提倡的方式。