UITextView
の内部実装はNSString
を使用しますが、内容が頻繁に変更されることがある場合はNSMutableString
を使用しないのはなぜですか?なぜUITextViewはテキストプロパティにstringを使用できますか?
2
A
答えて
5
一般的なコーディングの観点から:
プロパティを設定するとき、プロパティ設定メソッドが呼び出されます。こうすることで、コントロールが新しいコンテンツでコントロールを再描画できるように、プロパティが変更されたときにコントロールに通知することができます。
プロパティが可変オブジェクトの場合、その内容を変更することができます。コントロールはこれが発生したことを通知しないため、コントロールを再描画する必要があることはわかりません。
0
これは、外部クラスが私的な可変変数にアクセスすることを許可するのではなく、変更不可能なオブジェクトを渡すための一般的なパターンです。 NSArrayやNSDictionaryのようなコレクションクラスでも同じことが分かります。
0
もちろん、それが何を指しているのかを変更できない理由はありません!メンバーは単なるポインタなので、必要に応じて文字列をNSMutableString
に置き換えることができます。
多くのテキストをビューに追加する場合は、これはより効率的な方法です。
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
[myTextView setText:[[NSMutableString alloc] init]];
}
return self;
}
ただ、まだ@Guffaが彼の答えで説明したようなぜなら、そうでない場合はビュー自体を再描画するために知ることができませんするのsetTextを呼び出してください。
- (void)appendText:(NSString*)text
{
NSMutableString *dispText = (NSMutableString*)[myTextView text];
[dispText appendString:text];
[myTextView setText:dispText]; // notify myTextView of text change!
}
関連する問題
- 1. なぜOpenOfficeのカーソルオブジェクトからテキストプロパティにアクセスできますか?
- 2. なぜUILabelのテキストプロパティを設定できないのですか?
- 3. なぜ[UITextView "setText"]をNSThreadで使用できないのですか?
- 4. swtoのStringで.toInt()を使用できないのはなぜですか?
- 5. なぜ[String - > JsBoolean]をMap [String、JsValue]に追加できないのですか?
- 6. なぜUITextView/UITextFieldはiOSでUITextInputを実装できないのですか
- 7. なぜ "string" - "string" NaNですか?
- 8. Stringパラメータに対してtoUpperCase()メソッドを使用できないのはなぜですか?
- 9. #includeの後にstd :: stringを使用するのはなぜですか?<string>?
- 10. Stringはなぜ最終的ですか?
- 11. なぜHibernate STRINGを解決できないのですか?
- 12. DataObject.SetText(String)で空の文字列を使用できないのはなぜですか?
- 13. std :: stringで変換関数を使用できないのはなぜですか?
- 14. SQLite用のクラスでList of Stringを使用できますか?
- 15. なぜ、__cache_hash_codeは、std :: __ unordered_mapにのみ使用できますか?
- 16. stricmp()でstringを使用せずにcharを使用できますか?
- 17. クラスウィンドウを呼び出すときに変数をテキストプロパティとして使用できますか?
- 18. Angular2 - HostListenerに変数stringを使用できますか?
- 19. IPv4アドレスにv-stringを使用できますか?
- 20. #defineの定数部分にstringを使用できますか?
- 21. openssl暗号キーにstd :: stringを使用できますか?
- 22. jdbc sql_last_valueにvarchar/stringを使用できますか?
- 23. C++なぜ参照を使用する場合、私のマップ<string、string>を空にするのですか?
- 24. UITextViewを使用するときにキーボードを隠す方法は?
- 25. (string a、string b)タプル構文を.NET 4.5.2で使用できますか?
- 26. ScalaでStringとIntを連結できないのはなぜですか?
- 27. "filter"から$ sce.trustAsHtml(string)を使用できますか?
- 28. なぜインスタンスメンバー '___'はprepareForSegueの型 '___'に使用できませんか?
- 29. なぜUITextViewでフレームの最後までカーソルが届かないのですか
- 30. なぜ読み込み専用であれば、textstogrageプロパティでUITextViewコンテンツを編集できますか? UITextViewのためのアップルのドキュメントからの読み取り
私はopがこれを尋ねようとしたとは思っていませんが、なぜ、変更可能なオブジェクトの値だけを変更できないので、ラベルの文字列を変更してラベルに通知する必要はありません。受け入れられた答えを見て、あなたはそれをよりよく理解するでしょう。 – guenis
ええ、大丈夫、私は今それを見ることができます。このページには、私が心に留めている質問があり、私の意見は曇っていたと思います。けっこうだ!私の答えを落とすか? – NHDaly
私は理解している、ええ、あなたはあなたの答えを取ることができます(もちろん、あなたがする必要はありません) – guenis