當我嘗試調用實現特定協議的類的實例時,我收到有關在協議簽名中找不到方法的警告。當方法簽名確實存在時,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