2012-05-31 58 views
1

我遇到了dispatch_async挂起的问题。我想知道队列中有什么操作/方法,当我向队列中添加另一个操作时,我可以追踪队列挂起的位置。调度队列中的列表项

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

我验证了队列正在运行,它运行了其他操作,但它从来没有让它运行到最后来运行此方法。

回答

2

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

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