Fragen zu Kapitel 4

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Fragen zu Kapitel 4

    Morgen,

    1. in Kapitel 4, im Paragraphen "Arbeitsweise des Autorelease-Pools" wird die Factory "fullName" der Klasse Person hinzugefügt.

    a. In dieser wird ein Objekt "fullName" der Klasse NSMutableString instantiiert. Dann wird die Methoden appendString:_name ausgeführt.

    Wenn ich das jetzt mit einer Setter-Methode eine unserer selbstgeschriebener Klassen vergleiche, dann würde etwas wie "setString" den Retaincount für _name ja erhöhen. Mach appendString das auch?

    Ich nehme an der Grund dafür ist, dass dur appendString die Eigenschaft "inhalt" des Objektes fullName nicht wirklich auf das Objekt hinter _name zeigt, sondern nur den Inhalt "kopiert" und damit eigenständig weiterlebt. Ist das des rätsels Lösung?

    b. Warum benutzen wir hier die direkte Eigenschaft _name und nicht [self name]?

    Grüße,

    bauwerk
    bauwerk
  • bauwerk schrieb:

    Mach appendString das auch?

    Nein. -appendString: fügt einfach was zum Objekt hinzu, erstellt aber kein Neues.
    Genau genommen erhöht -setString: den RetainCount von _name auch nicht sondern ersetzt das vorhandene Objekt durch ein Neues.

    bauwerk schrieb:


    Ich nehme an der Grund dafür ist, dass dur appendString die Eigenschaft "inhalt" des Objektes fullName nicht wirklich auf das Objekt hinter _name zeigt, sondern nur den Inhalt "kopiert" und damit eigenständig weiterlebt. Ist das des rätsels Lösung?

    Nein. Lies dir mal die Onlinedokumentation zu NSMutableString durch. Das "mutable" im Namen deutet darauf hin, dass man das Objekt verändern kann.
    Wie genau es das funktioniert ist für die Programmierung erst mal vollkommen unerheblich.

    bauwerk schrieb:


    b. Warum benutzen wir hier die direkte Eigenschaft _name und nicht [self name]?

    Man sollte immer die Setter- und Gettermethoden benutzen. Es sei denn, man schreibt einen Setter oder Getter.
    «Applejack» "Don't you use your fancy mathematics to muddle the issue!"

    Iä-86! Iä-64! Awavauatsh fthagn!

    kmr schrieb:

    Ach, Du bist auch so ein leichtgläubiger Zeitgenosse, der alles glaubt, was irgendwelche Typen vor sich hin brabbeln. :-P