ios - Fallo de los estados de impresión LLDB de Xcode-NSUndoManager
(5)
¿ myTextField
realmente apunta a un UITextField
? Esa es una de las razones por las que este error aparecerá. Por ejemplo, el siguiente código se compilará, y si establezco un punto de interrupción en la tercera línea, puedo ingresar la po b.superview
para reproducir el error que vio.
NSString *a = @"not a view";
UITextField *b = (UITextField *)a;
UIView *view = b.superview;
Intente escribir po [myTextField class]
en tu indicador de LLDB para ver si en realidad es un UITextField
. Podría ser otro tipo de objeto, o nil
.
Tengo un punto de interrupción establecido y quiero imprimir la vista de mi UITextField. 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 supervisión? Encontré un enlace que proporciona una solución alternativa en el código: http://openradar.io/15890965 , pero me gustaría una mejor solución.
¿Tiene algún método de acceso personalizado para ''myTextField''? He visto este mismo problema varias veces y generalmente es causado por el po que intenta imprimir una propiedad para un objeto que se inicializa la primera vez que se llama a su captador. 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 sabe que ''myTextField'' se ha inicializado completamente.
Gente del mundo: ¡Tengo una respuesta!
Para esquivar todos los errores de UIKit: antes de escribir su declaració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 (que se encuentra here ).
La solución que utilizo para evitar este error durante la depuración es lanzar explícitamente todo .
En tu caso yo lo haría.
po [(UITextField *)myTextField superView]
Obtuve este error en Xcode 5.1.1 y lo arreglé saliendo de Xcode 5.1.1 y probando Xcode 6. El reinicio de Xcode 5.1.1 para Xcode 5.1.1 también puede funcionar para algunas personas.