iOS 5 - 编译用于调试的私有API - 特别是_enableRemoteInspector

Meg*_*aur 5 javascript debugging compiler-errors uiwebview ios

我正在寻找一种在UIWebView中调试JavaScript的方法,并且特别发现了一些关于_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];
}
Run Code Online (Sandbox Code Playgroud)

所以我尝试了performSelector,它可以工作,调试器按照描述工作.

但是如何在不使用performSelector的情况下编译它?

我正在运行Xcode 4.2.1,我的项目使用iOS5 SDK.

lxt*_*lxt 7

这是由于iOS 5中新的自动引用计数(ARC).您链接的示例代码假设您没有使用ARC.

如果您不使用ARC,则[NSClassFromString(@"WebView") _enableRemoteInspector]只会生成"未找到方法"警告(因为该方法未公开声明).

但是,由于各种原因,当您启用ARC时,此警告将成为错误.如果你想在不使用的情况下进行编译,则performSelector需要禁用ARC.