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 へのアップグレード後に発生し始めました。彼は定期的にネットワーク共有からファイルをロードしているため、システムがファイルを見つけようとする呼び出しをブロックしていると思います。周りを見回してみると、それはしばらく前から存在していた問題のようです。 ticket_id=F3058D68 .

問題は、いくつかのアプリケーションが問題が修正されたと報告しているにもかかわらず、実際の修正を追跡できなかったことです。これを修正する適切な方法は何でしょうか? バックグラウンドスレッドにオフロードすることが唯一の適切な解決策ですか、それとも何か不足していますか?

4

1 に答える 1

0

FWIW、recentDocumentURLsアプリの起動時に別のスレッドを呼び出すことでこれを回避しました。リストが利用可能になったら、URL を に配置し、その時点からと の両方をNSMutableArray更新します。NSDocumentControllerNSMutableArray

配列を使用した場合の動作を再現するNSDocumentController(一意の URL のみを保持する) ために、新しい URL に一致するすべての URL を削除してから、新しい URL を位置 0 に挿入します。

于 2015-11-14T05:22:24.233 に答える