简体   繁体   中英

Can I see the view hierarchy I have in my app while debugging in Xcode?

I am debugging my iOS app and since I have a view push/dismiss calls, I want to make sure I don't have any views in my stack that I wouldn't expect. Is it possible to see this in the Xcode debugger?

You might find lldb comes to the rescue with 'recursiveDescription'. Simply set a breakpoint at the point where you are interested in the view hierarchy. If for example you want everything in the window you can type

(lldb) po [[[[UIApplication sharedApplication] windows] firstObject] recursiveDescription]

Alternatively, I often find that when debugging views I am mostly interested in the hierarchy for a particular view. In that instance you can hook straight in to the point in code you are curious about (for example the viewDidAppear: method) and type:

(lldb) po [self.view recursiveDescription]

Note: With Xcode 6 Apple have added realtime view debugging which you can access from the debug bar. 实时视图调试Xcode 6

As all of your view controllers should be managed by the navigation controller, you should be able to do something like this:

NSArray * controllerArray = [[self navigationController] viewControllers];

for (UIViewController *controller in controllerArray){
   //Code here.. e.g. print their titles to see the array setup;
   NSLog(@"%@",controller.title);
}

Taken from here: How to iterate all the UIViewControllers on the app

还有Reveal.app ,它提供了比Xcode实时视图调试更多的功能,具有更好的UI并与AppCode集成。

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM