在 LLDB 使用 po [[UIWindow keyWindow] recursiveDescription]
来检查层次结构。它可以以文本形式打印出完整的视图层次结构。
用 po [[[UIWindow keyWindow] rootViewController] _printHierarchy]
来检查视图控制器。这是一个苹果默默在 iOS 8 中为 UIViewController
添加的私有辅助方法
使用方法:
用xcode启动app,然后点击xcode暂停运行按钮,然后在调试控制台输入下面语句:
- <pre name="code" class="objc">(lldb) po [[[UIWindow keyWindow] rootViewController] _printHierarchy]
- <HMViewController 0x7fa7d2df7fb0>, state: appeared, view: <UIView 0x7fa7d2f14920>
- (lldb) po [[UIWindow keyWindow] recursiveDescription]
- <UIWindow: 0x7fa7d2df9fc0; frame = (0 0; 414 736); autoresize = W+H; gestureRecognizers = <NSArray: 0x7fa7d2dfb000>; layer = <UIWindowLayer: 0x7fa7d2df63e0>>
- | <UIView: 0x7fa7d2f14920; frame = (0 0; 414 736); autoresize = W+H; layer = <CALayer: 0x7fa7d2f078c0>>
- | | <_UILayoutGuide: 0x7fa7d2f14c90; frame = (0 0; 0 20); hidden = YES; layer = <CALayer: 0x7fa7d2f084a0>>
- | | <_UILayoutGuide: 0x7fa7d2f15830; frame = (0 736; 0 0); hidden = YES; layer = <CALayer: 0x7fa7d2f11300>>
- (lldb) bt
- * thread #1: tid = 0xd2ee, 0x0000000106efe4de libsystem_kernel.dylib`mach_msg_trap + 10, queue = 'com.apple.main-thread', stop reason = signal SIGSTOP
- * frame #0: 0x0000000106efe4de libsystem_kernel.dylib`mach_msg_trap + 10
- frame #1: 0x0000000106efd64f libsystem_kernel.dylib`mach_msg + 55
- frame #2: 0x000000010423f1d4 CoreFoundation`__CFRunLoopServiceMachPort + 212
- frame #3: 0x000000010423e62f CoreFoundation`__CFRunLoopRun + 1295
- frame #4: 0x000000010423de98 CoreFoundation`CFRunLoopRunSpecific + 488
- frame #5: 0x00000001087caad2 GraphicsServices`GSEventRunModal + 161
- frame #6: 0x0000000104b6c676 UIKit`UIApplicationMain + 171
- frame #7: 0x00000001035455af 数据请求测试`main(argc=1, argv=0x00007fff5c6fb600) + 111 at main.m:14
- frame #8: 0x0000000106bcd92d libdyld.dylib`start + 1
- (lldb)