Когда я пытаюсь вызвать экземпляр класса, реализующего определенный протокол, я получаю предупреждения о том, что метод не найден в сигнатуре протокола.
предупреждение:
'-requestCompleted: requestType:' нет
найдено в протоколе (-ах) предупреждение:
«NSObject» может не отвечать на
'-RequestCompleted: ТипЗапрос:'
Я не смог понять причину этого предупреждения, поэтому скопировал эти классы без изменений в отдельный проект. Когда я создаю новый проект, предупреждения не генерируются.
Когда я выполняю код в исходном проекте, все работает нормально - просто во время сборки отображаются предупреждения, и я хочу, чтобы они исчезли.
Я уже пытался очистить мои цели сборки и удалить файлы из каталога сборки. Что я не вижу, что вызывает предупреждение?
// файл один
@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