如何在Objective-C编译器的行上抑制警告?
...
[[UIWebDocumentView class] jr_swizzleMethod:@selector(canPerformAction:withSender:) withMethod:@selector(myCanPerformAction:withSender:) error:nil]; // warning here
...
NSObject有这种方法(作为类别)。但编译器认为UIWebDocumentView没有。这是一个compiller的问题。是否有任何指令可以抑制代码块上的警告?
警告:
Receiver'UIWebDocumentView'是一个前向类并且对应 @interface可能不存在
P.S。 UIWebDocumentView
是私有API - 因此无法使用performSelector
方法来抑制警告。
答案 0 :(得分:3)
通常,您可以忽略单行代码的警告,如下所示:
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
[foo bar];
#pragma clang diagnostic pop
用实际警告替换-Warc-performSelector-leaks
。
由于你没有发布确切的警告,你必须自己找出-WarnLevel。
答案 1 :(得分:2)
解决这个问题的最简单方法就是让课程采用不同的方式:
[NSClassFromString(@"UIWebDocumentView") jr_swizzleMethod:@selector(canPerformAction:withSender:) withMethod:@selector(myCanPerformAction:withSender:) error:nil]; // warning here