在调试Swift代码时,我是否可以获得仅给定其地址的对象的类型引用?

Bil*_*ill 12 pointers objective-c ios lldb swift

在LLDB中调试Objective-C代码时,我经常使用它们的地址创建引用内存中对象的变量.例如:

(lldb) po self.view
<UIView: 0x7ff5f7a18430; frame = (0 64; 320 504); autoresize = W+H; layer = <CALayer: 0x7ff5f7a192e0>>
(lldb) e CALayer* $layer = (CALayer*) 0x7ff5f7a192e0
(lldb) e $layer.borderWidth
(CGFloat) $17 = 0
Run Code Online (Sandbox Code Playgroud)

鉴于对象的类型及其在内存中的地址,我能够检查和操作它.

调试Swift代码时这是不可能的吗?

Dar*_*ren 20

(lldb) e let $layer = unsafeBitCast(0x7fd120f474b0, CALayer.self)
Run Code Online (Sandbox Code Playgroud)

  • @Bill我通过在Swift标准库头部周围找到它们(Command +单击标准库函数或符号).所有有趣的函数和类在其名称或注释中都有"不安全". (2认同)