编译用于调试的私有api——特别是_enableRemoteInspector

iOS 5 - Compiling Private APIs for debugging - specifically _enableRemoteInspector

本文关键字:特别是 enableRemoteInspector api 用于 调试 编译      更新时间:2023-09-26

我正在寻找一种方法来调试JavaScript在UIWebView和遇到一些文章关于_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。

这是由于iOS 5中新的自动引用计数(ARC)。您链接到的示例代码假设您在使用ARC时而不是

如果你没有使用ARC, [NSClassFromString(@"WebView") _enableRemoteInspector]会简单地产生一个"method not found"的警告(因为该方法没有公开声明)。

然而,由于各种原因,当您启用ARC时,此警告变为错误。如果你想在不使用performSelector的情况下编译它,你需要禁用ARC。