Отключить предупреждение о том, что метод экземпляра не найден - PullRequest
5 голосов
/ 14 марта 2012

В настоящее время я работаю над подклассом NSProxy, который перехватывает определенные сообщения и никогда не пересылает их кому-либо, а только обрабатывает их, поэтому эти методы на самом деле никогда не существуют.И тут возникает проблема: очевидно, компилятор начинает жаловаться на отсутствующие реализации методов, и я не могу понять, как это остановить, добавив методы-заглушки в интерфейс, просто чтобы компилятор не работал, потому что методы не работаютпроизвольно сформированы, и я не знаю их заранее (чтобы сделать его более конкретным, я прошу этот проект).

В идеале я хотел бы сказать компилятору, чтоон вообще не должен выполнять какую-либо проверку метода для этого конкретного класса, но поскольку это кажется довольно маловероятным, я также был бы рад за #pragma или любой другой способ (который не включает в себя закрытие компилятора для каждого предупреждения ввесь проект / файл!)

1 Ответ

1 голос
/ 14 марта 2012

Ваши операторы switch на самом деле не произвольны, они просто могут иметь произвольную длину. Для большого количества длин вы можете пойти дальше и объявить их для удобства компилятора (и тогда вы получите проверку ошибок, чего не произойдет, если вы просто отключите предупреждение). Например:

typedef void (^ObjCCaseBlock)();

@interface NSObject ()
- (id)switch;
- (void)case:(NSString*)a :(ObjCCaseBlock)b;
- (void)case:(NSString*)a :(ObjCCaseBlock)b case:(NSString*)a :(ObjCCaseBlock)b;
- (void)case:(NSString*)a :(ObjCCaseBlock)b case:(NSString*)a :(ObjCCaseBlock)b case:(NSString*)a :(ObjCCaseBlock)b;
@end

Повторите для всех уровней, которые могут возникнуть (и вы можете добавить уровни, если они когда-либо сталкивались с проблемой). Это немного утомительно, но не сложно.

...