2012-11-08 39 views
-1

如何在Objective-C編譯器上禁用線上的警告?如何抑制Objective-C編譯器上的警告線?

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

NSObject有此方法(作爲類別)。但編譯器認爲UIWebDocumentView沒有。這是一個競爭者的問題。是否有任何指令來壓制代碼塊的警告?

警告:

接收機 'UIWebDocumentView' 是一個正向類和對應 @interface可能不存在

P.S. UIWebDocumentView是一個私有API - 因此不能使用performSelector方法禁止警告。

+0

請你的問題並添加行和**確切的警告文字**。 –

+0

我想找到一種方法來抑制任何警告。 – Dmitry

+1

[@selector - 帶多個參數?](http://stackoverflow.com/questions/2297613/selector-with-multiple-arguments) –

回答

2

解決這個問題的最簡單的方法就是讓類以不同的方式:

[NSClassFromString(@"UIWebDocumentView") jr_swizzleMethod:@selector(canPerformAction:withSender:) withMethod:@selector(myCanPerformAction:withSender:) error:nil]; // warning here 
2

一般來說,你可以忽略警告,代碼類似這樣一行:

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

與實際警告更換-Warc-performSelector-leaks

既然你沒有發佈確切的警告,你必須自己找出-WarnLevel。

+0

我已將實際的警告添加到問題中。 – Dmitry

+0

如何爲它找到正確的「-W ...」字符串? – Dmitry

+0

警告是:'Receiver'UIWebDocumentView'是一個前向類,相應的@interface可能不存在.' – Dmitry