-1

Objective-Cコンパイラの行で警告を抑制する方法は?

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

NSObjectにはこのメソッドがあります(カテゴリとして)。しかし、コンパイラはUIWebDocumentViewはそうではないと考えています。これは、コンパイラの問題です。コードのブロックで警告を抑制するディレクティブはありますか?

警告:

レシーバー「UIWebDocumentView」はフォワードクラスであり、対応する@interfaceが存在しない可能性があります

PSUIWebDocumentViewはプライベートAPIであるため、performSelectorメソッドtuを使用して警告を抑制することはできません。

4

2 に答える 2

4

通常、次のような1行のコードに対する警告は無視できます。

#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 に答える