【问题标题】:iOS 5 - Compiling Private APIs for debugging - specifically _enableRemoteInspectoriOS 5 - 为调试编译私有 API - 特别是 _enableRemoteInspector
【发布时间】:2011-12-29 10:13:23
【问题描述】:

我正在寻找一种在 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];
}

所以我尝试了 performSelector 并且它工作正常,并且调试器按描述工作。

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

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

【问题讨论】:

    标签: javascript ios debugging uiwebview compiler-errors


    【解决方案1】:

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

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

    但是,由于各种原因,当您启用 ARC 时,此警告会变成错误。如果您希望它在不使用 performSelector 的情况下进行编译,则需要禁用 ARC。

    【讨论】:

    • 如何 ARC 从警告变成错误?你有什么参考吗?我想知道本质原因。
    猜你喜欢
    • 1970-01-01
    • 2017-07-07
    • 2012-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多