重现崩溃的步骤:
如果调用 semaphore.wait(),然后在调用 semaphore.signal 之前取消初始化拥有它的视图控制器,则应用程序崩溃。
在类的 dinit 上出现以下错误:
EXC_BAD_INSTRUCTION with the message "BUG IN CLIENT OF LIBDISPATCH: Semaphore object deallocated while in use"
用过的:
let semaphore = DispatchSemaphore(value: 1)
但奇怪的是在 deinit 下添加下面提到的代码修复了崩溃问题,不知道为什么。
while (semaphore.signal() != 0) {}
那么有什么适当的解决方法吗?