Предупреждение сборки Xode и «метод не найден в протоколе», когда подпись метода существует - PullRequest
0 голосов
/ 18 января 2010

Когда я пытаюсь вызвать экземпляр класса, реализующего определенный протокол, я получаю предупреждения о том, что метод не найден в сигнатуре протокола.

предупреждение: '-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

Ответы [ 2 ]

4 голосов
/ 18 января 2010

Убедитесь, что вы импортируете правильный файл заголовка в файл BaseClass.h:

#import "ResponseProtocol.h"
0 голосов
/ 18 января 2010

Вы пробовали id <ResponseProtocol> delegate вместо NSObject <ResponseProtocol> *delegate? Похоже, что это защищенный способ в документах Obj-C.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...