我正在尝试在XCode中添加符号断点,以检查后台线程上的UI引擎修改。
我正在做的是以下事情:
但是,我总是收到错误消息:
Stopped due to an error evaluating condition of breakpoint 5.1: "!Thread.isMainThread"
Couldn't parse conditional expression:
error: use of undeclared identifier 'Thread'
UI Engine must be modified on main thread.
我不明白为什么断点条件不能评估我的条件。有人可以在这里解释我可能做错了什么吗?我也尝试过将它放在Obj-c中,但是没有运气。
编辑:Obj-C版本,在这里:!(BOOL)[NSThread isMainThread]
编辑2:Xcode版本11.3(11C29)
编辑3:好的,因此,关闭XCode并重新打开已经使Obj-C版本“正常运行”,它们在断点处停顿了大约4至5分钟。这实际上使这些断点不可用。不确定如何解决此问题。
通过将条件写为],我能够使您的原始符号断点按预期方式工作>
(BOOL)[NSThread isMainThread] == NO
[我怀疑有更好的方法,直接将BOOL与NO进行比较是非常糟糕的样式,但是至少它使我从“不工作”阶段过渡到“工作了”阶段。
为澄清起见,设置符号断点并使用条件确实可以,但是我会冒昧地指出,在大多数UIKit框架中,self和Thread都不可用作符号,因为对于大多数工具包,没有可用的调试信息,因此会出现错误:使用未声明的标识符'Thread'。