私は NSTextView サブクラスを作成しました。このサブクラスは、テキスト自体をプログラムで頻繁に変更します (たとえば、IDE のコードの書式設定のようなものです - 右中括弧の自動挿入など)。
これの私の最初の実装では、NSTextView のinsertText:
. これは実際には完全にうまく機能しているように見えました。しかし、 NSTextView のドキュメントを読んでいるときに (私は時々楽しみのために行っています)、ディスカッション セクションで次のことに気付きました。insertText:
このメソッドは、ユーザーが入力したテキストを挿入するためのエントリ ポイントであり、通常、他の目的には適していません。プログラムによるテキストの変更は、テキスト ストレージを直接操作することによって行うのが最適です。
ああ、悪い、私は思った。そのため、すべての insertText 呼び出しを基になる NSTextStorage ( replaceCharactersInRange:withString:
、ほとんど) への呼び出しに変更することに忠実に取り組みました。元に戻すを完全に台無しにすることに気付くまで、それは問題なく機能しているように見えました(もちろん、元に戻すはNSTextStorageではなくNSTextViewによって処理されるためです)。
だから、私が引っ張り出してテキストストレージに大量の元に戻すコードを入れる前に、おそらく私はパンクされたのではないかと思いますが、本当にinsertText:
それほど悪くはありませんか?
そうですね、私の質問は次のとおりです。NSTextView のinsertText:
呼び出しは、NSTextView のテキストをプログラムで変更するのに本当に「適していない」のでしょうか。