【发布时间】:2015-03-14 00:35:18
【问题描述】:
Apple 新增了一个private helper _printHierarchy in iOS8,可以在 LLDB 控制台中使用:
po [[[UIWindow keyWindow] rootViewController] _printHierarchy]
它以文本形式打印出整个视图控制器层次结构。
这仅在您在 Objective C 上调试代码时才有效。然而,在 Swift 中,这不起作用:
(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]
^
,
在 Swift 中的等效用法也不起作用:
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 中打印出视图控制器层次结构? 或者有没有办法在 LLDB 控制台中甚至在 Swift 项目中使用 ObjC?
【问题讨论】:
标签: ios swift ios8 xcode6 lldb