Obj.C

obj.C:バッファ使いまちがいを発見

使用しているバッファの整理をしていたら、まずいところを発見しました。

NSTextViewのバッファから直接書き出すとOKで、用意した読み込みバッファから書き出すとエラーになるので、バッファの整理をしました。今までは、エラーにならない方法で逃げていたのですが、ちゃんと調べることにしました。

機能的には、①NSTextView、②ファイルの読み込み、③URL、④サンプルコード(URL非同期読み込み)、⑤ファイルの書き出しの5種類です。rtf/dataはOKで、rtfd/txtがNGになります。rtfdのURL読み込み直後にSave(ファイル書き出し)をクリックすると落ちるので、URL読み出し直後に強制的にファイルに書き出すようにしたらOKでした。

それで、①NSTextViewをよく見たら、読み込みバッファ=NSTextView表示エリアとなっており、まちがいではないのですが、URLをUTF8で読み込んだ内容とは異なり、必ずしも意図しない結果になっていました。元々、修正結果をどう反映させるかは課題でしたが、今ようやくそれに着手できる状況になったということだろうと思います。

修正を反映させる処理のアイデアとしては、
① NSTextViewを単純に書き出す。
② NSTextViiewとファイル読み出し(あるいはURL読み出し)との差分をァイル読み出し(あるいはURL読み出し)分のオリジナルに反映させる。NSTextStorageに修正結果が反映されたものを最終アウトプットとすることができればシンプルなのですがどうなのでしょう?

調べてみることにします。ポイントは、レイアウトを崩さないで画面をファイルに書き出し、再現するです。キーワードは、beginEditing、NSTextStorage、textStorageWillProcessEditingあたり?

IMG_3107草を食む 2014.2.24