iOS 5 – Comstackción de API privadas para la debugging – específicamente _enableRemoteInspector

Estaba buscando un método para depurar JavaScript en UIWebView y encontré algunos artículos sobre _enableRemoteInspector específicamente

http://atnan.com/blog/2011/11/17/enabling-remote-debugging-via-private-apis-in-mobile-safari/

Sin embargo, no pude get el código de ejemplo para comstackr. Sigo recibiendo un error de "No se conoce el método de class para selecctor". No solo una advertencia.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { //Works [NSClassFromString(@"WebView") performSelector:@selector(_enableRemoteInspector)]; //Won't compile //[NSClassFromString(@"WebView") _enableRemoteInspector]; } 

Entonces intenté performSelector y eso funciona y el depurador funciona como se describe.

¿Pero cómo comstackrlo sin recurrir a performSelector?

Estoy ejecutando Xcode 4.2.1 y mi proyecto utiliza el SDK de iOS5.

Esto se debe al nuevo recuento automático de references (ARC) en iOS 5. El código de muestra al que se vincula supone que no está utilizando ARC.

Si no utilizaba ARC, [NSClassFromString(@"WebView") _enableRemoteInspector] simplemente produciría una advertencia de "método no encontrado" (porque el método no se declara públicamente).

Sin embargo, por diversas razones cuando tiene ARC habilitado, esta advertencia se convierte en un error. Si desea comstackrlo sin usar performSelector , deberá deshabilitar ARC.