代码之家  ›  专栏  ›  技术社区  ›  daredevil1234

条件语句的Swift Xcode 11断点不起作用

  •  0
  • daredevil1234  · 技术社区  · 6 年前

    我试图在XCode中添加一个符号断点,以检查后台线程上的UI引擎修改。

    我正在做的是:

    enter image description here

    但是,我返回的错误消息始终是:

    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版本,此处: !(BOOL)[NSThread isMainThread]

    编辑3:好的,所以,关闭XCode并重新打开已经得到了Obj-C版本的“工作”,它们会在一个断点上暂停大约4-5分钟。这实际上使这些断点不可用。不知道如何解决这个问题。

    0 回复  |  直到 6 年前
        1
  •  1
  •   matt    6 年前

    通过将条件编写为

    (BOOL)[NSThread isMainThread] == NO
    

        2
  •  0
  •   Wattholm    6 年前

    为了澄清,设置符号断点和使用条件确实有效,但是 我认为self和Thread不能作为大多数UIKit框架的符号,因为大多数UIKit框架都没有可用的调试信息,因此出现错误:使用未声明的标识符“Thread”。

    How to log out self when add a symbol breakpoint at -[UIViewController viewWillAppear] method

    这里还提供了有关为子类创建符号断点的其他信息,以及使用objective-c条件可能的解决方法:

    Using of symbolic breakpoints for child classes in Xcode?

    也就是说,如果您只对调用该方法(layoutSubviews)的模块中的特定类感兴趣,则可以在符号断点内指定该模块,如果您有自己的方法实现(例如,在类代码中重写了它),则条件线程.isMainThread或者!线程.isMainThread事实上会为那个班工作。