objective-c - peso - xcode language support
Error de lldb: propiedad no encontrada en el objeto de tipo (3)
Estoy tratando de depurar mi aplicación iOS usando lldb y estoy obteniendo errores realmente extraños en la depuración.
Unas líneas antes de mi punto de interrupción, tengo:
CGRect frame = view.frame;
A la que puedo acceder sin problemas con el comando de print frame
en lldb. Sin embargo, cuando intento acceder al marco nuevamente en lldb, print view.frame
y print view.frame
el siguiente error:
error: property ''frame'' not found on object of type ''UIView *''
Esto no tiene sentido ya que puedo verificar que la view
es una instancia de UIView*
y tiene una propiedad válida llamada marco al escribir po view
y obtener resultados correctos:
(UIView *) $4 = 0x1e199bf0 <MyAppCustomView: 0x1e199bf0; frame = (3398 3396; 204 208); layer = <CALayer: 0x1e199ce0>>
Este error lldb en particular me pasa mucho y no pude encontrar la causa de este error. Alguien sugirió en el ''recuento'' de propiedad que no se encontró en el objeto del tipo ''NSMutableArray *'' comando de PO en lldb que se podría usar gdb como (gdb) p view.frame
pero recibo un error: ''(gdb)'' is not a valid command.
y sospecho que un comando gdb "funcionaría?" Dentro de otro depurador de todos modos.
¿Alguna sugerencia o solución para este error que se produce al azar?
En caso de que lo anterior no funcione (lo que no funcionó para mí, buscando el marco para una celda variable, clase derivada de UITableViewCell): forzar los paréntesis adicionales parecía ayudar al pequeño cerebro de lldb:
p ((CGRect)[cell frame])
presto magico
(CGRect) $5 = origin=(x=0, y=0) size=(width=320, height=44)
La notación de puntos para el envío de mensajes no es compatible con lldb. Use la notación de corchete y emita el resultado a CGRect:
p (CGRect)[view frame]
Tuve que deshabilitar (desmarcar) Thread Sanitizer en Xcode> Producto> Esquema> Editar esquema> Ejecutar> Diagnóstico. Con Thread Sanitizer habilitado no pude acceder a muchas propiedades de NSView (por ejemplo, límites, marco) a través de LLDB.