您好,欢迎来到二三娱乐。
搜索
您的当前位置:首页iOS | UI调试利器Chisel使用实战(LLDB调试基础三

iOS | UI调试利器Chisel使用实战(LLDB调试基础三

来源:二三娱乐

上一篇开发随笔主要介绍了Chisel的安装和常用命令功能简介.这一篇是实战篇,读者如果能实际操作一下,对Chisel会有更深的理解.

演示是的代码状态如下图:

演示代码
pclass命令
这个命令可以打印类的继承关系,有了它,再也不怕记不住继承关系了.实例如下所示:
// 情景:打印时,断点在Viewcontroller中
(lldb) pclass self
ViewController
   | UIViewController
   |    | UIResponder
   |    |    | NSObject
(lldb) 

pviews命令
这个命令可以打印自本视图起的视图层次和视图详细信息.打印中,竖线|缩进代表父子关系.

<UIView: 0x7f824977cbc0; frame = (0 0; 375 667); autoresize = W+H; layer = <CALayer: 0x7f824977be60>>
   | <_UILayoutGuide: 0x7f8249442020; frame = (0 0; 0 0); hidden = YES; layer = <CALayer: 0x7f824977ab50>>
   | <_UILayoutGuide: 0x7f82495867a0; frame = (0 667; 0 0); hidden = YES; layer = <CALayer: 0x7f824957fd70>>
   | <UIView: 0x7f824977bf30; frame = (0 0; 300 300); layer = <CALayer: 0x7f824977c0a0>>
   |    | <UIView: 0x7f8249587770; frame = (0 0; 100 100); layer = <CALayer: 0x7f82495094d0>>
  1. 利用打印信息中的地址,可以针对每个视图进行操作.比如修改其颜色/显示/隐藏等.

2.利用属性值,判断布局问题.比如查看每个子视图没有显示的原因.

pvc命令
该命令和pviews功能相同,前者打印的控制器的层次关系和信息,而后者是针对视图的.

visualize命令
这个命令可以通过mac上自带的的图片预览软件直接查看视图,如image,view等.即便视图还没渲染出来时,也可以查看.

// 情景:视图还没渲染出来 
(lldb) visualize self.view
visualize命令查看图
模拟器视图还未渲染

border命令
该命令可以显示视图的边界,在视图层次比较复杂时,更容易找到目标视图.

// 显示redView边界 
//  --color/-c <color>; Type: string
(lldb) border redView -c green
(lldb) visualize self.view
(lldb) 
显示边界

fv命令
该命令是搜索上下文特定的视图,可以通过正则表达式匹配.

(lldb) fv scrollView
0x18d3b8c0 UIScrollView
0x137d0c50 UIScrollView
0x131b1580 UIScrollView
0x131b2070 UIScrollView

fvc命令
该命令同fv,类似于pviews和pvc的关系.

(lldb) fvc Home
0x1393fe00 HomeFeedsViewController

hide/show命令
hide隐藏视图,便于看清层次关系.show显示隐藏视图.

// 隐藏blueView
(lldb) hide blueView
(lldb) visualize self.view
隐藏blueView

*** pinternals命令***
这个命令主要是打印View内部的详细信息,可以根据信息确定View的状态.

// 查看redView内部结构
(lldb) pinternals redView
(UIView) $2 = {
  UIResponder = {
    NSObject = {
      isa = UIView
    }
    _hasAlternateNextResponder = false
    _hasInputAssistantItem = false
  }
  _constraintsExceptingSubviewAutoresizingConstraints = nil
  _cachedTraitCollection = nil
  _layer = 0x00007f8bc1724870
  _layerRetained = nil
  _gestureInfo = nil
  _gestureRecognizers = nil
  _subviewCache = 0x00007f8bc1701900
  _templateLayoutView = nil
  _charge = 0
  _tag = 0
  _viewDelegate = nil
  _backgroundColorSystemColorName = 0xa0014029b0c20c58 @"redColor"
  _countOfMotionEffectsInSubtree = 0
  _countOfTraitChangeRespondersInDirectSubtree = 0
  _cachedScreenScale = 0
  _retainCount = 2
  _tintAdjustmentDimmingCount = 0
  _shouldArchiveUIAppearanceTags = false
  _interactionTintColor = nil
  _layoutMarginsGuide = nil
  _minXVariable = nil
  _minYVariable = nil
  _boundsWidthVariable = nil
  _boundsHeightVariable = nil
  _layoutEngine = nil
  _layoutDebuggingIdentifier = nil
  _internalConstraints = nil
  _continuousCornerRadius = 0
  _countOfFocusedAncestorTrackingViewsInSubtree = 0
  _semanticContentAttribute = 0
  __presentationControllerToNotifyOnLayoutSubviews = nil
  _previewingSegueTemplateStorage = nil
  _contentSizeNotificationToken = nil
  _readableContentGuide = nil
}

以上这些在调试UI时比较常用且比较方便.Chisel提供的命令不止这些,可以通过help命令查看使用方法.
*温馨提示: cmd + k 可以清除控制台输出.

Copyright © 2019- yule263.com 版权所有 湘ICP备2023023988号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务