首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调用`[[NSDocumentController sharedDocumentController] recentDocumentURL]`挂起

调用`[[NSDocumentController sharedDocumentController] recentDocumentURL]`挂起
EN

Stack Overflow用户
提问于 2015-10-17 17:50:54
回答 1查看 256关注 0票数 1

我有一个应用程序,它经常调用[[NSDocumentController sharedDocumentController] recentDocumentURLs]来重建最近打开的项目列表。这已经运行了很长一段时间了,但是最近我收到一份报告说它挂起了一个用户的系统:

11 -[NSDocumentController(NSPrivate) _recentDocumentURLsForKey:] + 271 (AppKit + 5903428) [0x7fff92ae5444] 1-11 11 -[__NSOperationInternal _waitUntilFinished:] + 131 (Foundation + 1060402) [0x7fff86a1ee32] 1-11 11 __psynch_cvwait + 10 (libsystem_kernel.dylib + 94046) [0x7fff8dec6f5e] 1-11 *11 psynch_cvcontinue + 0 (pthread + 30281) [0xffffff7f80e8d649] 1-11

对于报告错误的用户来说,这是在对El Capitan进行升级之后开始的--他经常从网络共享中加载文件,所以我猜系统正在阻止试图定位这些文件的调用。环顾四周,这似乎是一个已经存在了一段时间的问题:http://www.cocoabuilder.com/archive/cocoa/317137-thread-deadlock.htmlid=F3058D68

问题是,虽然有几个应用程序报告这个问题已经解决了,但我还无法跟踪实际的修复。有什么合适的方法来解决这个问题呢?是将它卸载到后台线程是唯一合适的解决方案,还是我遗漏了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-14 05:22:24

FWIW,在应用程序启动时,我通过在一个单独的线程中调用recentDocumentURLs来解决这个问题。一旦列表可用,我就将URL放置到NSMutableArray中,并从那时起对NSDocumentControllerNSMutableArray进行更新。

为了使用数组复制NSDocumentController的行为(只保留唯一的URL),我删除与新URL匹配的所有URL,然后在0位置插入新URL。

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

https://stackoverflow.com/questions/33189738

复制
相关文章

相似问题

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