swift defer语句不会断点但可以打印

时间:2018-12-16 22:54:49

标签: swift breakpoints deferred

我像这样把延期了,

do {
    defer {                     
        self.captureSession?.commitConfiguration()
        print("commitConfiguration")
    }

    self.captureSession?.beginConfiguration() 
    // try a bunch AV session setup calls
    ...
}
catch {
    // error
}

我试图设置一个断点,以确保defer块最后进入。令我惊讶的是,事实并非如此。我检查了文档,运行了该应用程序,看似没有什么错。所以我发表了一份印刷声明。瞧,它确实打印了它,表明即使调试断点从未被激活,它也可能执行了。

有人在Xcode 10.1 High Sierra中观察到这一点吗?

1 个答案:

答案 0 :(得分:2)

是的,我注意到了完全一样的东西。如果内存可用,则可以使用Xcode 9.4和High Sierra来工作。延迟触发,但断点不会中断。