禁用实例方法未找到警告

Jus*_*Sid 5 objective-c llvm clang nsproxy

我目前正在研究一个NSProxy拦截某些消息的子类,并且从不将它们转发给任何人,只是处理它们,所以这些方法从未真正存在过.而这里出现了问题,显然编译器开始抱怨缺少方法实现,我无法弄清楚如何阻止它,向接口添加存根方法只是为了让编译器关闭不起作用因为方法是任意形成的,我不知道它们(为了使它更具体,我要求这个项目).

理想情况下,我想告诉编译器它根本不应该对这个特定的类进行任何方法检查,但是因为这似乎不太可能,我也很乐意以某种方式#pragma或任何其他方式(不包括关闭编译整个项目/文件中的每个警告!)

Rob*_*ier 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
Run Code Online (Sandbox Code Playgroud)

对可能发生的尽可能多的级别重复此操作(如果遇到问题,您可以添加级别)。这有点乏味,但并不困难。