Problem mit Converter

  • Ich glaube, einen habe ich noch: Auf der Seite 333 lautet die letzte Zeile für das Beispiel der Serialisierung von XML-Property-Lists

    Quellcode

    1. [serialized writeToFile:path atomically:YES];


    Soweit wie ich das Beispiel verstehe, müsste diese Zeile jedoch lauten:

    Quellcode

    1. [data writeToFile:path atomically:YES];
  • Original von Nemortus
    Ich glaube, einen habe ich noch: Auf der Seite 333 lautet die letzte Zeile für das Beispiel der Serialisierung von XML-Property-Lists

    Quellcode

    1. [serialized writeToFile:path atomically:YES];


    Soweit wie ich das Beispiel verstehe, müsste diese Zeile jedoch lauten:

    Quellcode

    1. [data writeToFile:path atomically:YES];

    Jepp, noch einmal DANKE!
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • Original von Nemortus
    Original von Amin Negm-Awad
    Ich weiß, woran es liegt DANKE!


    Jetzt geht es wieder. Bevor es in Vergessenheit gerät: Der Fehler auf Seite 333 hat es noch nicht in die Errata geschafft ;)

    Ja, meiner Freundin fiel gestern auf dem Weg zu ihrem Yoga-Kurs ein, dass ich die Daten für ihre USt-Voranmeldung vom Küchentisch hätte mitnehmen müssen. So saß ich in der Kanzlei, bis sie wiederkam: 20.30 Uhr. :(
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • Ich glaub´, ich hab noch einen im Buch gefunden.

    Seite 284, erste Zeile.

    Muss das nicht heißen "return [[person copy] autorelease];" ?
    Jedenfalls komme ich nur so klar damit.
    Habe Mut, Dich Deines eigenen Verstandes zu bedienen.
    (Immanuel Kant)
  • Der hat mich einiges Kopfzerbrechen gekostet, aber immerhin habe ich wieder mal was gelernt dabei ;).

    Allerdings muss ich gestehen, dass ich nicht ganz verstehe, warum man diese "convinience copy" Methode überhaupt braucht.
    Beim Kopieren einer Person wird man doch i.d.R. immer ein autoreleased Objekt wollen, nie eines ohne autorelease.
    + (Person*)personWithPerson:(Person*)person
    macht doch absolut nichts anderes als das autoreleas, dass wir gleich in -copyWithZone abfrühstücken können.

    Das könnte man doch gleich in e -copyWithZone abfrühstücken:

    Quellcode

    1. - (Person*)copyWithZone:(NSZone*)zone
    2. {
    3. NSLog(@"lokale Methode wird ausgeführt");
    4. Person* copy =[[[self class] allocWithZone:zone] init];
    5. copy.lastname = self.lastname;
    6. copy.firstname = self.firstname;
    7. copy.group = nil;
    8. // return copy;
    9. return [copy autorelease];
    10. }

    Hat das irgendwelche Nachteile?

    Gruß
    D.Mon
    Habe Mut, Dich Deines eigenen Verstandes zu bedienen.
    (Immanuel Kant)
  • Original von D.Mon
    Das könnte man doch gleich in e -copyWithZone abfrühstücken:

    Quellcode

    1. - (Person*)copyWithZone:(NSZone*)zone
    2. {
    3. NSLog(@"lokale Methode wird ausgeführt");
    4. Person* copy =[[[self class] allocWithZone:zone] init];
    5. copy.lastname = self.lastname;
    6. copy.firstname = self.firstname;
    7. copy.group = nil;
    8. // return copy;
    9. return [copy autorelease];
    10. }

    Hat das irgendwelche Nachteile?

    Ja, das hat einen gravierenden Nachteil. Mit so einer Implementierung von copyWithZone: verhält sich die Methode nicht mehr konform zu den Speicherverwaltungsregeln. Objekte, die von copy... zurückgegeben werden sind grundsätzlich nicht autoreleased! Auf diese Regel muss man sich verlassen können, sonst wird die Speicherverwaltung zum Glücksspiel.

    Michael
  • Früher war es durchaus nicht unüblich, mit eigenen allocs/copys herumzuhantieren und ein paar Zeilen weiter freizugeben. Daher hat sich das schon einmal überlebt. Aber gut, sei's drum.

    Aber es gibt einen ganz wichtigen Einsatzzweck für -copy, nämlich den Copy-Setter. Schau dir den noch einmal an. Wenn da etwas aus dem ARP zurückkäme, würden meine Programme nicht mehr laufen. :)
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?