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.

Author: Binarian, 2014-06-09

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:

introduzca la descripción de la imagen aquí

Gracias a Craig Hockenberry y Steve Streza por la actualización (encontrado aquí).

 2
Author: rizzes,
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]
 1
Author: bhargavg,
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.

 1
Author: pbuchheit,
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.

 0
Author: ,
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-07-05 03:39:23

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.

 0
Author: Kyle Robson,
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