2015-01-18 20 views
12

LLDB'de Objective-C kodunu hata ayıklama yaparken, genellikle yalnızca adreslerini kullanarak bellekteki nesnelere başvuran değişkenler oluşturur. Örneğin: Sadece bir nesnenin türünü ve bellekte adresini VerilenSwift kodunu hata ayıklama yaparken, yalnızca adresi verilen bir nesneye yazılan bir başvuru alabilir miyim?

(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 

, ben incelemek ve bunu işlemek mümkün değilim.

Swift kodunu ayıklarken bu imkansız mıdır?

cevap

20
(lldb) e let $layer = unsafeBitCast(0x7fd120f474b0, CALayer.self) 
+0

İnanılmaz! Teşekkürler! – Bill

+0

'güvensizBitCast' daha da havalı. Bu API'ları nasıl buldunuz? Hiçbiri dokümanlar içinde görünmüyor. – Bill

+2

@Bill'i, Swift standart kitaplığı üstbilgisini (Command + Click standart kütüphane işlevi veya sembolü) gezdirerek buldum. Tüm ilginç fonksiyonlar ve sınıflar kendi adlarına veya yorumlarına "Güvensiz" sahiptir. – Darren

İlgili konular