蘋果增加,可以在控制檯LLDB中使用的private helper _printHierarchy
in iOS8:如何在使用Swift的LLDB控制檯中使用_printHierarchy?
po [[[UIWindow keyWindow] rootViewController] _printHierarchy]
打印出的文本形式的整體視圖控制器層次結構。
這僅適用,如果你正在調試的目的C.在斯威夫特的代碼,但是,這並不工作:
(lldb) po [[[UIWindow keyWindow] rootViewController] _printHierarchy]
error: <EXPR>:1:13: error: expected ',' separator
[[[UIWindow keyWindow] rootViewController] _printHierarchy]
^
,
<EXPR>:1:24: error: expected ',' separator
[[[UIWindow keyWindow] rootViewController] _printHierarchy]
^
,
<EXPR>:1:44: error: expected ',' separator
[[[UIWindow keyWindow] rootViewController] _printHierarchy]
^
,
在雨燕等同使用無法正常工作或:
po UIApplication.sharedApplication().keyWindow!.rootViewController!._printHierarchy
結束了一個錯誤(可能是因爲_printHierarchy
是私人財產):
(lldb) po UIApplication.sharedApplication().keyWindow!.rootViewController!._printHierarchy()
error: <EXPR>:1:64: error: 'UIViewController' does not have a member named '_printHierarchy'
UIApplication.sharedApplication().keyWindow!.rootViewController!._printHierarchy
^~~~~~~~~~~~~~~~
問題是:如何在Swift中打印視圖控制器層次結構?或者有沒有一種方法,即使在Swift項目中,如何在LLDB控制檯中使用ObjC?
嗯工作,我已經試過了,並我更新了我的questi在控制檯中出現錯誤。 – 2015-02-19 15:26:32
@TomKraina如果您在Swift代碼中使用斷點,那麼您處於Swift框架中,因此'po'需要Swift表達式。但是,如果你在Swift程序運行時(這是我經常做的),你只需點擊暫停按鈕,當你得到'(lldb)'提示符時,你很可能不會在Swift框架中,因此Objective-C表達式很好。幸運的是,如果您在Swift框架中暫停應用程序,仍然可以明確提供'--language'選項(或'-l'選項)來指定即使您處於Swift框架中,也應該解釋Objective-C表達式。看修改後的答案。 – Rob 2015-02-19 19:00:21
太酷了!我不知道你可以在'lldb'中指定一種語言! – 2015-02-20 16:31:36