如何在Objective-C编译器上禁止警告?

时间:2012-11-08 18:01:43

标签: objective-c xcode

如何在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方法来抑制警告。

2 个答案:

答案 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