【发布时间】:2017-10-18 18:23:02
【问题描述】:
几个月来我一直在默默地处理这个问题,最后我觉得有必要在这里问一下。 lldb 中的 'po' 通常会导致以下输出:
(lldb) 错误::3:1:错误:使用未解析的标识符“inView” 观察 ^~~~~~
我正在编写自定义动画视图控制器转换。我暂停了animateTransition(using transitionContext:) 方法。 inView 是在方法开始时定义的局部变量。我在下一行使用它。我想查询它的值。它显示在调试器的“变量视图”部分(但只有名称,没有详细信息)。
所以我认为没有理由不打印出来。
现在,在人们谈论优化之前,这是一个运行默认方案的全新单视图应用程序。 Swift 编译器的默认优化设置对调试配置文件没有优化。这确实是我的项目的设置方式。
那么问题出在哪里??
【问题讨论】:
-
并非如此。我会继续阅读它。它担心这些本地变量会不确定地打印出来,这让我相信这是不稳定的行为,而不是打印出这些变量的一些有效的固有问题。
-
它是否与
frame variable或frame variable inView一起显示?p计算任意表达式,这比查找变量要复杂几个数量级。 -
frame variable似乎可以工作。po有时有效,但通常无效。它倾向于在方法的开头(7 行)而不是中间(10-15 行)。它完全不可预测。 -
这是一个长镜头,我真的不指望它会起作用,但是当 Swift 不起作用时,您可以尝试使用 ObjC:
ex -l objc -O -- inView-l标志让您指定要评估的表达式的语言:即使在 Swift 上下文中停止,您也可以编写 ObjC 表达式。