iOS 5 - 编译私有API进行调试 - 特别是_enableRemoteInspector

5
我在寻找一种方法来调试UIWebView中的JavaScript,并发现了一些关于_enableRemoteInspector的文章,具体请参见以下链接:http://atnan.com/blog/2011/11/17/enabling-remote-debugging-via-private-apis-in-mobile-safari/。然而,我无法编译示例代码,一直出现"No known class method for selecctor"的错误,而不仅仅是一个警告。
- (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。

1个回答

7
由于iOS 5中的新自动引用计数(ARC),这是由你提供的示例代码假设你没有使用ARC。如果你没有使用ARC,[NSClassFromString(@"WebView") _enableRemoteInspector]只会产生一个“方法未找到”的警告(因为该方法没有公开声明)。
然而,出于各种原因,当启用ARC时,该警告将变成一个错误。如果你想在不使用performSelector的情况下编译它,你需要禁用ARC。

ARC从警告变成错误的原因是什么?你有任何参考资料吗?我想知道其根本原因。 - iHTCboy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接