2015-10-17 94 views
1

我有一個應用程序,通常調用[[NSDocumentController sharedDocumentController] recentDocumentURLs]來重建最近打開的項目列表。這已經有一段時間了運作良好,但我最近買了一份報告,它掛在用戶的系統:調用`[[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

對於用戶報告這個錯誤,這開始升級到埃爾卡皮坦後發生 - 他經常從網絡共享中加載文件,所以我猜測系統阻止了試圖查找文件的電話。環顧四周,這似乎成了一段時間的問題:http://www.cocoabuilder.com/archive/cocoa/317137-thread-deadlock.htmlhttp://ticket.macromates.com/show?ticket_id=F3058D68

問題是,雖然有幾個應用程序報告問題已修復,但我一直無法找到實際的修復程序。什麼是解決這個問題的合適方法?將它卸載到後臺線程是唯一合適的解決方案,還是有一些我錯過了?

回答

0

FWIW,我在應用程序啓動時,通過在單獨的線程中調用recentDocumentURLs來解決此問題。一旦列表可用,我將URL放入NSMutableArray,從此更新NSDocumentControllerNSMutableArray

要使用陣列(僅保持唯一網址),我刪除匹配新的URL的所有URL複製的NSDocumentController行爲,然後插入在位置新建一個0