Fallo de Instrucciones de impresión Xcode LLDB-NSUndoManager
Tengo un punto de interrupción establecido y quiero imprimir la superview de mi UITextField. Escribo po myTextField.superview
pero recibo el siguiente error:
error: instance method 'undoManager' has incompatible result types in different translation units ('id' vs. 'NSUndoManager *')
note: instance method 'undoManager' also declared here
error: 1 errors parsing expression
¿Qué significa esto y cómo puedo imprimir mi superview? He encontrado un enlace que proporciona una solución janky en el código: http://openradar.io/15890965 , pero me gustaría una solución mejor.
5 answers
Gente del mundo: ¡Tengo una respuesta!
Para esquivar todos los errores de UIKit: Antes de escribir su instrucción po
, escriba la línea {expr @import UIKit
Si desea activar esto para su aplicación globalmente, agregue el siguiente punto de interrupción en su delegado de aplicación:
Gracias a Craig Hockenberry y Steve Streza por la actualización (encontrado aquí).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-05-17 21:36:16
La solución que utilizo para evitar este error mientras depuro es lanzar explícitamente todo.
En tu caso yo haría
po [(UITextField *)myTextField superView]
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-08-11 17:18:28
¿Tiene algún método de acceso personalizado para 'myTextField'? He visto este mismo problema varias veces y generalmente es causado por el po tratando de imprimir una propiedad para un objeto que se inicializa la primera vez que se llama a su getter. Por ejemplo, si intento ejecutar ' po self.ImageView.contentMode ' en un UITableViewCell obtengo el mismo error. Intente mover su punto de interrupción a un punto en el código donde sepa que 'myTextField' ha sido completamente inicializado.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-08-14 15:57:15
¿myTextField
realmente apunta a un UITextField
? Esa es una de las razones por las que aparecerá este error. Por ejemplo, el siguiente código se compilará, y si establezco un punto de interrupción en la tercera línea, puedo ingresar po b.superview
para reproducir el error que vio.
NSString *a = @"not a view";
UITextField *b = (UITextField *)a;
UIView *view = b.superview;
Intenta escribir po [myTextField class]
en el indicador LLDB para ver si realmente es un UITextField
. Podría ser otro tipo de objeto, o nil
.
Obtuve este error en Xcode 5.1.1 y lo arreglé al salir de Xcode 5.1.1 y probar Xcode 6. Reiniciar Xcode 5.1.1 para Xcode 5.1.1 también puede funcionar para algunas personas.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-10-07 21:13:05