なぜNSAttributedString
はNSString
で継承されませんか? NSAttributedString
には親クラスがありますNSObject
なぜですか?なぜNSAttributedStringがNSStringで継承されないのですか? NSAttributedStringにはNSObjectという親クラスがありますなぜですか?
答えて
なぜそれがNSString
のサブクラスであると思いますか?このクラスは、NSString
とNSAttributedString
の間の相関がNSString
とUILabel
の比較に近くなるようにテキストを変更しています。
文字列のかなりのメソッドは、長さなどの属性付き文字列でオーバーライドできますが、空で、部分文字列です...しかし、それらの多くはできません。また、属性文字列が他のメソッドに挿入されると、さらに悪化します。
たとえば、フォントの文字列サイズは、内部的にフォント情報を保持する可能性があるため、属性付き文字列とはまったく異なります。どちらか一方の描画がまったく違っています...
属性付き文字列を他のデータ構造体に文字列として送ることは想像できますか?たとえば、属性のある文字列を何らかのJSONデータまたはデータベースに無意識に格納します。確かに、シリアル化されているときはNSString
と同じ値を返すかもしれませんが、真実にはXMLまたはHTMLの何らかの形式にシリアル化する方が意味があります。その理由は、すべてのデータで再利用するために実際にどこかに保存できるからです。
いずれにしても、NSString
をNSAttributedString
にサブクラス化するのは間違いです。なぜなら、2つの機能とデータ構造が単純に大きく異なるからです。あなたは、もし私が両方とも同じスーパークラスDrawableText
または何かを持つことができると思う描画の観点から見ているかもしれません。しかし、それ以外のものは全く意味をなさない。たとえば、テキストが同じであるが属性が異なる2つの属性付き文字列を比較した場合、これらは同じであると言いますか?私はほとんどの場合NOと言うでしょう。無効化のためのif !previousString.isEqual(newString) self.hasChanges = true
は、その属性によって異なる必要があります。しかし、dictionary[myMutableString]
のような下付き文字を書いても、その属性はまったく含まれてはいけません。
"なぜ誰かが帰属する文字列をキーとして使用するのでしょうか"と思うかもしれません。これらのことは間違って起こります。あなたはテキストフィールドを持っていて、誰かがそれに属性付きの文字列を使用することによってそれを少し上手くするので、属性付き文字列がサブクラス化されている場合はmyTextField.text = myAttributedString
が動作します。しかし、myTextField.text
はまだ通常の文字列として定義されています。だからdictionary[myTextField.text]
が完全に正しいように見えます。
- 1. 継承がうまくいかないと思うのはなぜですか?
- 2. NSObjectを継承する必要があるのはなぜですか?
- 3. この例では、子クラスが親クラスからメソッドを継承しないのはなぜですか?
- 4. Rubyモジュールの継承がクラス継承のように機能しないのはなぜですか?
- 5. ApplicationContextがAbstractApplicationContextから継承されないのはなぜですか?
- 6. 継承されたメンバーがなぜ許可されないのですか?
- 7. クラス(data.frame(...))がリストの継承を表示しないのはなぜですか?
- 8. ControllerはGitHubではControllerBaseを継承しますが、VSでは継承しないのはなぜですか?
- 9. なぜSpringロガーがorg.springframeworkから継承されないのですか
- 10. コンストラクタがプライベートであるクラスから継承できないのはなぜですか?
- 11. NSObjectクラスがUITableViewDataSourceプロトコルを遵守できないのはなぜですか?
- 12. [NSObject(NSObject)doesNotRecognizeSelector:]でアプリがクラッシュするのはなぜですか?
- 13. 親フィールドは継承されない可能性がありますか?
- 14. 絶対配置されたDIVが親の幅を継承しないのはなぜですか?
- 15. typecasting演算子が継承されたクラスで動作しないのはなぜですか?
- 16. プロトタイプの継承された子クラスが別の子クラスのインスタンスであるのはなぜですか?
- 17. Javaクラスが実装されたインタフェースからアノテーションを継承しないのはなぜですか?
- 18. QLabelから継承したクラス。カスタムスロットが呼び出されないのはなぜですか?
- 19. なぜ、私は基本クラスを継承しているのですか? 'AttributeError'はなぜですか?
- 20. GCCは、あなたが友人であるときにプライベートネストされたクラスから継承を許可しないのはなぜですか?
- 21. 基本クラスが仮想クラスとして継承されていても、基本クラスが2回継承されるのはなぜですか?
- 22. AoPで純粋な継承ベースのプロキシが悪いのはなぜですか?
- 23. boost :: scoped_ptrが継承シナリオで動作しないのはなぜですか?
- 24. クラス継承が期待どおりに継承されない
- 25. 私のディレクティブが親スコープから関数を継承できないのはなぜですか?
- 26. NSOrderedSetがNSSetから継承しないのはなぜですか?
- 27. NSAttributedStringの複数行が不正確な高さですか?
- 28. なぜ親コルーチンがキャンセルされないのですか?
- 29. 仮想的に継承されたクラスのサイズがchar 8であるのはなぜですか?
- 30. AppDelegateクラスがUIResponderから継承するのはなぜですか?