2016-07-27 41 views
0

von Apple Dokumentation Lesen für UITextView, lese ich dieses für textStorage EigenschaftWarum kann ich den UITextView-Inhalt nach der Eigenschaft textstogrange bearbeiten, wenn ReadNeonly?

The text storage object holding the text displayed in this text view. (read-only) 

Declaration 

OBJECTIVE-C 
@property(nonatomic, readonly, strong) NSTextStorage *textStorage 

Aber in Notizen meines Professors

[self.body.textStorage 
setAttributes:@{NSForegroundColorAttributeName : sender.backgroundColor} 
range:self.body.selectedRange]; 

Wie ist es möglich bearbeiten Attribute textStorage ist, wenn nur lesbar ist?

Antwort

0

Die Eigenschaft ist ein Zeiger auf ein Objekt NSTextStorage. Das Attribut readonly markiert die Eigenschaft als schreibgeschützt, in diesem Fall bedeutet dies, dass der Zeiger nicht geändert werden kann.

Es sagt jedoch nichts darüber aus, ob das Objekt, auf das es zeigt, veränderbar ist oder nicht. Sie können also den aktuellen textStorage bearbeiten, aber nicht durch einen anderen Gegenstand ersetzen.

+0

So kann Wert des Zeigers (Adresse des Speichers) nicht geändert werden. Warum ist es Ihrer Meinung nach wichtig, dass der Zeiger schreibgeschützt ist? – ndPPPhz

+0

Dies bedeutet, dass UITextView intern annehmen kann, dass der textStorage einer bestimmten Unterklasse entspricht. – Mats

+0

Uhm ... tut mir leid, aber ich verstehe nicht ...:/ – ndPPPhz