Cómo utilizar el comando lipo en la vista jerárquica de depuración con Swift.
En Objective-C, puedo usar el siguiente comando para ver las propiedades de algunos objetos de vista:
// 1. Enviando mensajes directamente a las direcciones de memoria
po [0x10daab000 contentInset]
// 2. O convertir al tipo correspondiente y luego enviar el mensaje.
po [((UITableView *)0x10daab000) contentInset]
Pero cuando desarrollo proyectos con Swift, no puedo hacer eso. Cuando uso este comando, Xcode solo imprime el objeto 0x10daab000
, como si estuviera usando po 0x10daab000
.
Además, no puedo acceder a
contentInset
aquí usando la sintaxis similar a Swift, es decir,0x10daab000.contentInset
. Pero creo que esto es normal.
Creo que debería ser posible hacer lo mismo en un proyecto Swift como en un proyecto Objective-C, ¿verdad? Entonces, si alguien sabe cómo hacerlo, lo agradecería.
davy.ai
Desafortunadamente, en Swift no puedes ver las propiedades de los objetos de vista de la misma manera que en Objective-C. La razón de esto es porque la implementación de la introspección de objetos en Swift es diferente a la de Objective-C. En Swift, los objetos no se representan como punteros a la memoria, por lo que en lugar de utilizar direcciones de memoria para acceder a propiedades y métodos, necesitas usar la notación de punto de la siguiente manera:
Este fragmento de código devolvería la propiedad contentInset del objeto tableview. Por lo tanto, en proyectos de Swift, necesitas usar la notación de punto para acceder a las propiedades y métodos de los objetos.