Предупреждение об отключении метода экземпляра не найдено

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

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


person JustSid    schedule 14.03.2012    source источник


Ответы (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

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

person Rob Napier    schedule 14.03.2012
comment
Ну, он действительно работает, но становится большим и неприятным почти мгновенно. - person JustSid; 15.03.2012
comment
Немного погуглив, похоже, что это единственный вариант (хотя подал радар для #pragma)... Я не очень доволен решением, но я думаю, что на данный момент оно должно сработать. - person JustSid; 15.03.2012