2012-03-14 2 views
5

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

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

ответ

1

Ваши операторы 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 

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

+0

Это не работает с 'default', который не заставляет быть в конце ... – JustSid

+0

Или хорошо, он действительно работает, но он становится большим и неприятным почти сразу. – JustSid

+0

После того, как вы немного поработали над поиском, это, по-видимому, единственный вариант (однако, для радиолокатора для «# прагмы») ... Я не очень доволен решением, но, я думаю, он должен сделать трюк для Теперь. – JustSid

Смежные вопросы