类似于 Anonymous closure argument not contained in a closure 但与lldb相关
tableViews.forEach {
$0.dataSource = self
$0.delegate = self
$0.estimatedRowHeight = 30
^^^^^^^^^^^^^^ breakpoint is here
}
尝试调试
(lldb)p $ 0.delegate
错误:: 3:1:错误:不包含匿名闭包参数 关闭$ 0.delegate
(lldb)po $ 0.delegate
错误:: 3:1:错误:不包含匿名闭包参数 封闭 $ 0.delegate
视觉调试(将光标定位在$ 0上)确实有效, 您可以扩展树并转到您感兴趣的变量。但是有一个小问题,用于uitableview的索引不胜枚举,因此可视化调试意图为 理解地狱
鉴于调试的可视化部分必须起作用,因此必须有某种方法 从命令行那里????我怎样才能只得到我感兴趣的部分?
答案 0 :(得分:5)
实际上,“ p”命令会编译您键入的文本,就像该表达式已出现在您所停靠的框架的文本中一样。为此,它必须完全重新创建该上下文。 lldb拥有很多这种权利,但它尚不知道如何在用于编译表达式的上下文中模拟$闭包自动变量。
但是,更一般而言,工作print
要做的工作要困难得多,仅查看局部变量,并不奇怪lldb也具有查看简单局部变量的更直接的方法。该工具是Xcode用于实现本地视图和工具提示的工具。但这也是lldb命令行命令:
(lldb) frame var $0
“ frame var”命令没有完整的语言解析器,例如,它无法计算表达式。但是它确实允许您指定结构的元素,例如:
(lldb) frame var $0.delegate
使用frame var
命令可能会更幸运。