きりかノート 3冊め

おあそびプログラミング

Carbon と Cocoa のファイル保存時の挙動のちがい

UKKQueue の動作を確認していたとき(Cocoa 勉強会での発表)にうすうす気づいてはいたのだけれど、Cocoa と Carbon ではファイル保存の挙動が異なる。それについて、Carbon/Cocoa differences で説明されている。

  1. 新規文書を作成し保存する
  2. その文書を変更する
  3. 文書を開いたまま、Finder でファイル名を変更する
  4. さらに文書を変更して保存する

としたときに、Cocoa (TextEdit) では元の文書は名称変更されたままで、最初のファイル名で新しくファイルが作成される。Carbon(Photoshop) では名称が変更されたことが通知されたとのこと。

これは実際に Cocoa と Carbon でドキュメントファイルの扱いに違いがあるためで、cocoabuilder を "FSREF rename" あたりで検索するといろいろ議論が見つかったりする。

ユーザからすると、移動しても影響がないのが良いのは確かだけれど、少なくとも Cocoa/ NSDocument の振る舞いはずっとパスに依存した状態になっている。ドキュメントファイルのバンドルパッケージのことを考えると、解決が難しいのはわかるけれどどうにかうまい解決方法はないものだろうか。