/ / LLDB (Swift): conversión de la dirección de memoria sin procesar en un tipo utilizable en Xcode 9 iOS Simulator / Device [duplicate] - swift, xcode, lldb

LLDB (Swift): conversión de la dirección de memoria sin procesar en un tipo utilizable en Xcode 9 iOS Simulator / Device [duplicate] - swift, xcode, lldb

¿Cómo se lanza un puntero a un tipo de objeto Swift conocido en lldb al depurar una aplicación iOS en Xcode 9?

Estoy tratando de imprimir la descripción de un objeto en Swift dada su dirección de memoria en el SDK de Xcode 9 / iOS 11. Había estado usando la técnica descrita aquí: LLDB (Swift): Convertir la dirección sin formato en un tipo utilizable (Nota: esta técnica funciona bien al depurar una aplicación macOS).

(lldb) p unsafeBitCast(0x00006080000e2280, to: UIViewController.self)

Pero al escribir una declaración similar en lldb en Xcode 9 mientras se depura una aplicación iOS, aparece el siguiente mensaje de error:

error: use of undeclared identifier "to". O eliminando la parte "to:":

error: use of undeclared identifier "unsafeBitCast".

Busqué la documentación de un reemplazo para el Swift unsafeBitCast() Método, pero no he encontrado ninguna mención de su desaprobación. ¿Es esto un error en el tiempo de ejecución de lldb / Swift iOS?

Roto: Xcode 9 + iOS 11 Simulator, Xcode 9 + iOS 9.x Simulator, Xcode 9 + iOS 9.x dispositivo
Trabajo: Xcode 8 + iOS Simulator / Device, aplicación Xcode 9 + macOS 10.12

Gracias por sus ideas.

Respuestas

1 para la respuesta № 1

Puedes crear un UnsafeMutablePointer desde su dirección de memoria y recupere el objeto utilizando los punteros pointee atributo:

let object = UnsafeMutablePointer<NSTabViewController>(bitPattern: yourMemoryAddress)?.pointee