トップ | バージョン2 最新版 | バージョン3 β版

バージョン 1 から バージョン 3 における更新: チケット #1654

差分発生行の前後
無視リスト:
更新日時:
2022/05/15 17:49:12 (3 年 前)
更新者:
daisuke
コメント:

凡例:

変更なし
追加
削除
変更
  • チケット #1654

    • ステータス 属性が new から closed に 変更されました。
    • 解決方法 属性が から 対応済 に 変更されました。
    • マイルストーン 属性が から 3.6.3 に 変更されました。
  • チケット #1654 – 説明

    v1 v3  
    22→他アプリと同じファイルを開き、他アプリで保存した場合に発生。 
    330.2s間隔で保存を行うテストアプリを作成して、再現。数分程度で再現する。(バージョン3.6.2) 
     4 
     5対策メモ 
     6<原因> 
     7下記の条件を満たす場合に問題発生する。 
     8・presentedItemDidChangeの中で当該ファイルのreadを行っている。 
     9・そのreadのfile coordinatorのoptionにNSFileCoordinatorReadingWithoutChangesフラグはつけていない。 
     10→おそらくfile coordinatorが他プロセスのsavePresentedItemChangesWithCompletionHandlerを呼ぶ処理と、presentedItemDidChangeのリターンがOS内でデッドロックを起こしている。必ずしも問題発生しない(1/300程度の確率)ので、おそらくタイミングイシュー。 
     11Appleドキュメントに特に記述は見つけられなかった。OS不具合の可能性あり? 
     12<対策> 
     13・presentedItemDidChangeの中で直接readせず、内部イベントキューにイベントを積む。 
     14・file coordinatorのread処理にNSFileCoordinatorReadingWithoutChangesを付ける。 
     15