iOS开发之UI层次打印

在界面开发中,苹果提供了一个非常实用的的私有函数recursiveDescription(UIView),用来打印UIView及其子窗口的属性。

 

我在2010年就开始实用这个私有接口做调试用,一般是作为调试代码嵌在需要的地方。代码如下:

[self.view recursiveDescription];

 

但是现在项目用ARC了,发现这个函数不好使,编译的时候会报错(No visible @interface for 'UIView' declares the selector 'recursiveDescription')

于是我就尝试用performSelector这个方法来实现,代码如下:

[self.view performSelector:@selector(recursiveDescription)];

刚开始好使,但是最近用的时候(XCode5),什么也没有打印出来...难道在XCode4.6下好使?如果有人知道的请分享下

 

最后我在控制台(console)使用po指令成功了,我用的是LLDB调试器

在你需要查看UIView层级的时候,加断点,等App运行到这个断点后,在控制台输入如下命令

po [self.view recursiveDescription]

得到的效果如下:

<UIView: 0xfa7c5a0; frame = (0 0; 320 568); autoresize = W+H; layer = <CALayer: 0xfa7b980>>
   | <UIView: 0xfa80450; frame = (0 20; 320 548); autoresize = W+H; layer = <CALayer: 0xfa80110>>
   |    | <UIView: 0xeb70f20; frame = (0 0; 320 568); autoresize = W+H; layer = <CALayer: 0xeb71080>>
   |    | <UIView: 0xe94f3e0; frame = (0 0; 320 548); autoresize = W+H; layer = <CALayer: 0xe94f440>>
   |    |    | <EAGLView: 0xe94e890; frame = (0 0; 320 548); autoresize = W+H; layer = <CAEAGLLayer: 0xe94eb00>>
   |    | <UIWebView: 0xe934b50; frame = (0 0; 320 548); opaque = NO; autoresize = W+H; layer = <CALayer: 0xe943360>>
   |    |    | <_UIWebViewScrollView: 0xeb6c230; frame = (0 0; 320 548); clipsToBounds = YES; autoresize = H; gestureRecognizers = <NSArray: 0xeb60410>; layer = <CALayer: 0xeb695f0>; contentOffset: {0, 0}>
   |    |    |    | <UIWebBrowserView: 0x12b11400; frame = (0 0; 320 548); opaque = NO; gestureRecognizers = <NSArray: 0xe949a80>; layer = <UIWebLayer: 0xe944ae0>>
   |    |    |    |    | <TileHostLayer: 0xe945240> (layer)
   |    |    |    |    |    | <TileLayer: 0xeb6dec0> (layer)
   |    |    |    |    |    | <TileLayer: 0xeb6e340> (layer)

 

 

实际上,在控制台输入调试指令来监控运行状态的方法更加方便

转载于:https://www.cnblogs.com/perryxiong/p/3469710.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值