-1

如何抑制 Objective-C 编译器上的警告?

...
[[UIWebDocumentView class] jr_swizzleMethod:@selector(canPerformAction:withSender:) withMethod:@selector(myCanPerformAction:withSender:) error:nil]; // warning here
...

NSObject 有这个方法(作为类别)。但是编译器认为 UIWebDocumentView 没有。这是编译器的问题。是否有任何指令可以禁止代码块上的警告?

警告:

Receiver 'UIWebDocumentView' 是一个转发类,对应的@interface 可能不存在

PSUIWebDocumentView是一个私有 API - 所以不能使用performSelector方法 tu 抑制警告。

4

2 回答 2

4

通常,您可以忽略单行代码的警告,如下所示:

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
[foo bar];
#pragma clang diagnostic pop        

替换-Warc-performSelector-leaks为实际警告。

由于您没有发布确切的警告,因此您必须自己弄清楚 -WarnLevel 。

于 2012-11-08T18:17:17.280 回答
2

解决这个问题的最简单方法就是让课程采用不同的方式:

[NSClassFromString(@"UIWebDocumentView") jr_swizzleMethod:@selector(canPerformAction:withSender:) withMethod:@selector(myCanPerformAction:withSender:) error:nil]; // warning here
于 2012-11-08T18:55:57.107 回答