我目前正在研究一个NSProxy
子类,它拦截某些消息并且永远不会将它们转发给任何人,只是处理它们,因此这些方法从未真正存在过。而这里出现了问题,显然编译器开始抱怨缺少方法实现,我无法弄清楚如何阻止它,向接口添加存根方法只是为了让编译器关闭不起作用因为方法是任意形成的,我不知道它们(为了使它更具体,我要求this项目。)
理想情况下,我想告诉编译器它根本不应该对这个特定类进行任何方法检查,但是因为这似乎不太可能,我也会对#pragma
或任何其他方式感到高兴(其中不包括为整个项目/文件中的每个警告关闭编译器!)
答案 0 :(得分: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
重复尽可能多的级别(如果碰到问题,你可以添加级别)。这有点乏味,但并不困难。