Objective c 调用“[[NSDocumentController sharedDocumentController]recentDocumentURLs]”挂起

Objective c 调用“[[NSDocumentController sharedDocumentController]recentDocumentURLs]”挂起,objective-c,cocoa,nsdocumentcontroller,Objective C,Cocoa,Nsdocumentcontroller,我有一个应用程序,它定期调用[[NSDocumentController sharedDocumentController]recentdocumenturl]来重建最近打开的项目列表。这已经运行了一段时间了,但我最近收到一份报告说它挂起了用户的系统: 11-[NSDocumentController(NSPrivate)\最新文档urlsforkey:+271(AppKit+5903428)[0x7fff92ae5444]1-11 11-[内部操作等待完成:][131(基础+1060402)

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


11-[NSDocumentController(NSPrivate)\最新文档urlsforkey:+271(AppKit+5903428)[0x7fff92ae5444]1-11
11-[内部操作等待完成:][131(基础+1060402)[0x7fff86a1ee32]1-11
11同步cvwait+10(libsystem\u kernel.dylib+94046)[0x7fff8dec6f5e]1-11
*11 psynch_cvcontinue+0(pthread+30281)[0xffffff7f80e8d649]1-11

对于报告错误的用户来说,这是在升级到El Capitan后开始的-他经常从网络共享加载文件,所以我猜系统正在阻止试图定位文件的调用。环顾四周,这似乎是一个已经存在了一段时间的问题:和


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

FWIW,我在应用程序启动时,通过在单独的线程中调用
recentdocumenturl
解决了这个问题。列表可用后,我将URL放入一个
NSMutableArray
,从那时起更新
NSDocumentController
NSMutableArray


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

FWIW,我在应用程序启动时在单独的线程中调用
recentdocumenturl
,解决了这个问题。列表可用后,我将URL放入一个
NSMutableArray
,从那时起更新
NSDocumentController
NSMutableArray

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