NSAttributedString が MVC パラダイムに正しく従う方法を誰かに説明してもらえますか? NSString から継承されていないことはわかっていますが、それでも文字列であるため、それが私のモデルの一部であると言えます。ただし、下線、フォント、影などの UI 属性の設定は、MVC を使用する場合は明らかにビューの一部であるため、これがどのようにルールに従っているかはよくわかりません。
2 に答える
NSAttributedString はモデル クラスです。
属性付き文字列の表現を持っているだけです。
属性を格納しているからといって、属性の表示を担当するわけではありません。
シェイプ用のカスタム クラスがあるとします。正方形を描画して色で塗りつぶすのは表示ビュー次第であるため、正方形を描画して色を保存した場合でも、モデル オブジェクトはモデル オブジェクトになります。モデル オブジェクトは属性を保存する場所にすぎません。
NSAttributedString
インフラストラクチャを提供し、Cocoaのスタイル付きテキストモデルクラスのスーパークラスですNSTextStorage
。AnNSTextStorage
は、NSAttributedString
レイアウトマネージャーと話し合うことができ、編集に関していくつかの簿記/便利な方法を実行するだけです。
コントローラーの職務はによって処理されNSLayoutManager
ます。これの多くは、Unicode文字列をグリフに変換し、それらをスタイリングし、さまざまなジオメトリ計算を実行することと関係があります。これはNSTextContainer
、(基本クラスの場合)NSSize
レイアウトマネージャーがグリフをストロークする場所、改行が発生する場所などを計算するために使用できるオブジェクトに関して、これらすべてを実行します。
スタイル付きテキスト用のCocoaのビュークラスはNSText
とそのサブクラスであり、ルーラー、フォント、およびカラーパネルと連携します。 NSTextView
はNSText
サブクラスでありNSCells
、オブジェクトを共有しNSText
てコンテンツを編集します。 NSText
はでありNSResponder
、textStorageおよびlayoutManager(存在する場合)のテキスト編集メッセージを受け入れます。