2011-12-29 60 views
5

我一直在尋找一種方法來調試JavaScript在UIWebView中約_enableRemoteInspector一些相關的文章特地趕來的iOS 5 - 編譯私人API進行調試 - 特別_enableRemoteInspector

http://atnan.com/blog/2011/11/17/enabling-remote-debugging-via-private-apis-in-mobile-safari/

我不能得到的例子代碼儘管編譯。我一直得到一個「沒有已知類選擇器的方法」錯誤。不只是一個警告。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 

    //Works 
    [NSClassFromString(@"WebView") performSelector:@selector(_enableRemoteInspector)]; 

    //Won't compile 
    //[NSClassFromString(@"WebView") _enableRemoteInspector]; 
} 

所以我嘗試了performSelector,它的工作原理和調試器的工作方式如上所述。

但你如何編譯它而不訴諸performSelector?

我正在運行Xcode 4.2.1,我的項目使用iOS5 SDK。

回答

7

這是由於iOS 5中新的自動引用計數(ARC)引起的。您鏈接的示例代碼使用ARC假定您是而不是

如果您沒有使用ARC,[NSClassFromString(@"WebView") _enableRemoteInspector]只會產生「未找到方法」警告(因爲該方法未被公開聲明)。

但是,由於各種原因,當您啓用ARC時,此警告將成爲錯誤。如果您希望在不使用performSelector的情況下進行編譯,則需要禁用ARC。

+0

從警告的方式ARC成爲一個錯誤?你有什麼參考?我想知道根本原因。 – iHTCboy 2017-11-03 03:26:54