iOS 开发调试过程中, 每次改完代码之后, 都需要重新 run 起来才能看到效果, 所以非常麻烦且耗费时间, 本来开发时间就紧张, 所以我们要想尽一切办法来节省时间, 提高开发效率.
之前都是在 OC 项目中用一些高级调试, 网上文章也比较多, 在swift项目中也是试了好多次, 找了好多资料才找到的, 特意做个记录, 所以今天只谈与 swift 紧密相关的操作, 当然也很简单, 至于 LLDB 其他的高级调试技巧, 大家可自行上网搜一下, 后边会再做记录, 还请多多关注😄.
场景 和 代码
在 view 上有一个 label, 初始背景色为红色, 在调试过程中需要把背景色改为蓝色, 但是我又不想重新 run 项目, 此处只是模拟一个场景, 实际开发中可能不会去改颜色, 但是也不排除, 比如看别人的代码, 改个颜色来确认是不是要找的视图. 代码如下图, 比较简单就直接放了一张图. 我们在 touchesBegan 中打上断点.
调试过程
1. 查看label的内存地址并记录
-
点击
view debug按钮, 现在背景色是红色, 按下图所示找到label的内存地址并记录下来0x104c124a0, 后边要用到.
2. 触发断点, 修改背景色
-
放开上一步的
view debug模式, 点击屏幕, 触发断点,然后在控制台依次输入下图中的命令.expression let $myLb = unsafeBitCast(0x104c124a0, to:UILabel.self)自定义变量拿到label.expression $myLb.backgroundColor = .blue将颜色改为蓝色- 放开断点
(lldb) expression let $myLb = unsafeBitCast(0x104c124a0, to:UILabel.self) (lldb) expression $myLb.backgroundColor = .blue () $R1 = {} (lldb) c注意:
$myLb前边的$符一定要有 ,这里LLDB自定义变量的规则.
3. 查看修改结果
- 我直接用
view debug按钮给大家看执行后的结果了, 没有用手机截图.