Original von Tom9811
Wenn du das auf value-Objects beschränkst, ist es in der Tat so, dass ein Copy Sinn macht. Deshalb schreib ich ja auch Ausnahme! Du schriebst "nie so machen".
Ich bezog mich eindeutig auf Setter für Strings: Die Setter-Methoden für die Strings würde ich so niemals implementieren. Ich glaube, Du solltest mal gründlicher lesen.

Original von Tom9811
Value-Objetcs sind das Gegenteil von KVO, KVC, CB. Sie sind dafür da, Daten unabänderlich von der Außenwelt selbst zu halten.
Ja, genau. Und in einem Objekt, wie hier z.B. Worker, will ich nicht, das mir irgendjemand von außen, d.h. ohne über die Setter-Methoden zu gehen, an den Objekt-Eigenschaften herumpfuscht. Das bekomme ich dann nicht mit und habe dann eventuell Probleme, wenn es z.B. objektinterne Abhängigkeiten gibt.
Original von Tom9811
Das ist die Ausnahme, die zudem Speicher kostet. In der Regel will du Beziehungen haben, nicht private Kopien. Wenn jemand einen Namen in einem TableView ändert, soll sich das automatisch fortsetzen. Es soll nicht irgendwo eine private, eigene Kopie stehen bleiben.
Davor bist Du auch bei Deiner Art Setter nicht sicher, weil man Objekte am Setter vorbei ändern kann.
Original von Tom9811
In der Tat läuft das bei einem immutable af das gleiche heraus. Wer garantiert dir, dass es ein immutable ist?
Keiner, deshalb muss ich eine Kopie machen, wenn ich nicht will, dass jemand anders ohne mein Wissen an meinen Objekteigenschaften rumschraubt.
Original von Tom9811
Außerdem: Wenn du nur einen retain machen möchtest, warum in Gottes Namen machst du dann nicht einen retain, sondern verschwendest Speicher um das gleiche uneränderliche PObjekt zweimal zu halten? Arbeitet deine Familie in der Speicherindustrie?
Ich möchte bei einer Setter-Methode für NSStrings eine Kopie, wenn der übergebene String mutable ist und ein retain, wenn er immutable ist. Ein copy macht das bei NSString genau so.
Original von Tom9811
Für die üblichen Accessoren mit KVO, KVC und Cb gibt es Probleme.
Ich konnte noch keine feststellen.
Original von Tom9811
Außerdem müllst du damit den Speicher zu.
Wieso? Sobald der Autoreleasepool geleert wird, gibt es keinen Unterschied mehr, außer ich muss wirklich eine Kopie machen, um mir nicht ins Handwerk pfuschen zu lassen. Und noch einmal: von immutable Strings macht Cocoa keine Kopie, sondern retaint das Objekt.
Michael
