1

我遇到了 dispatch_async 挂起的问题。当我向队列中添加另一个操作时,我想找出队列中有哪些操作/方法,以便我可以追踪我的队列挂起的位置。

        dispatch_async(dispatch_get_main_queue(), ^{
            // NSLog the items in the queue at this moment
            [_delegate searchOperationFinished:self];
        });

我验证了队列正在运行它运行其他操作,但它永远不会运行到最后运行此方法。

4

1 回答 1

2

你不能,据我所知。检查控制台输出以查看是否有异常引发。更好的是,在调试器下运行它并打破异常。

如果这没有显示任何内容,请在调试器中停止它并检查主线程的堆栈跟踪。据推测,某些东西要么在主线程上被阻塞,要么正在运行内部运行循环。无论哪种方式,堆栈跟踪都应该揭示什么。(另一种获取堆栈跟踪的方法,至少在 Mac OS X 上,是使用 Activity Monitor 或 Instruments 来“采样”进程。)

于 2012-05-31T21:23:11.090 回答