iOS 5 - Компиляция частных API для отладки - в частности _enableRemoteInspector - PullRequest
5 голосов
/ 29 декабря 2011

Я искал метод для отладки 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];
}

Итак, я попытался выполнить executeSelector, и это работает, и отладчик работает, как описано.

Но как вы скомпилируете его, не прибегая к выполнению выбора?

Я использую Xcode 4.2.1, и в моем проекте используется iOS5 SDK.

1 Ответ

7 голосов
/ 29 декабря 2011

Это связано с новым автоматическим подсчетом ссылок (ARC) в iOS 5. Пример кода, с которым вы связались, предполагает, что вы не используете ARC.

Если вы не используете ARC, [NSClassFromString(@"WebView") _enableRemoteInspector] просто выдаст предупреждение "метод не найден" (потому что метод не объявлен публично).

Однако по разным причинам, когда вы включили ARC, это предупреждение становится ошибкой. Если вы хотите, чтобы он компилировался без использования performSelector, вам нужно отключить ARC.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...