当我尝试调用实现特定协议的类的实例时,我收到有关在协议签名中找不到方法的警告。当方法签名确实存在时,Xode生成警告和“在协议中找不到的方法”
警告: '-requestCompleted:的RequestType:' 不 在协议(一个或多个)警告实测值: '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
而且,顺便说一下,如果您使ResponseProtocol符合NSObject协议,则可以使您的委托ivar类型为“id”。 – 2010-01-17 21:37:58