2

[注意:此问答主要针对一小部分使用块和队列的开发人员,他们会遇到无法解释的崩溃。]

我的应用程序使用了一个 dispatchQueue,当它被释放时,我得到了这个奇怪的崩溃:

[MyClass dealloc]
objc_storeStrong
objc_release
_dispatch_xref_dispose

我的应用程序在 iOS4.3 和 iOS5.1 中运行良好,f 发生了什么????

4

1 回答 1

3

事实证明,队列被挂起,其中有一个排队的块。我在挂起队列时设置了一个标志,dispatchQueueResumed,有一个 __block BOOL 变量,表示该块是否应该认为自己被取消,所以我更改了我的 dealloc,如下所示:

- (void)dealloc (
    if(!dispatchQueueResumed) {
        dispatchQueueCancel = YES;
        dispatch_resume(dispatchQueue);
        dispatch_group_wait(dispatchQueueGroup, DISPATCH_TIME_FOREVER);
    }
}
于 2012-09-22T00:45:59.393 回答