Apple добавила закрытый помощник _printHierarchy
в 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? Или есть способ использования ObjC в консоли LLDB даже в проектах Swift?