首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可可OSX应用程序在dispatch_async上挂起

可可OSX应用程序在dispatch_async上挂起
EN

Stack Overflow用户
提问于 2015-08-27 20:02:20
回答 2查看 343关注 0票数 1

我的应用程序会触发一个线程,专门用来检查进程的状态。它每5-10秒触发一次:

代码语言:javascript
复制
if(!monitorTask){
        MYLog(100,@"Monitor task is dead");
        return;
}
dispatch_async(monitorTask,^{ // fuckup here
        MYLog(150,@"...Checking iTunes");

然而,它似乎也经常挂在那里:

有任何关于如何修复/捕获这个问题的线索吗?这个应用程序正在海滩球上,但在Xcode中“运行”很好地遵循了这条指令:

EN

回答 2

Stack Overflow用户

发布于 2015-09-05 05:54:37

是否确定monitorTask的类型为dispatch_queue_tSee these Apple guides for an example of how to create a serial queue

虽然我在你的评论中看到你创建队列是正确的。

也有可能在您可以将队列分派给它之前,队列已经被释放。您可能需要对队列执行perform some memory management操作,以确保在调度之前不会释放队列。

最后,需要注意的是,串行队列通常用于保护共享资源。如果您只是尝试对资源执行定期检查(一个永远不会写入且只读取的任务),那么您最好使用并发队列(您可能只应使用其中一个4 given global queues,

或者,因为您似乎要在应用程序的整个生命周期中始终进行检查,所以您甚至可以考虑使用Dispatch Source,更具体地说,是一个Timer Dispatch Source

票数 0
EN

Stack Overflow用户

发布于 2015-09-05 05:57:06

我认为这可能是Xcode调试器的问题,因为我不能在Xcode之外运行应用程序时复制它:-/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32248857

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档