Hallo,
bezugnehmend auf diesen Thread: osxentwicklerforum.de/thread.php?threadid=5435 möchte ich eine Frage bzgl. der Speicherverwaltung stellen.
Vorhanden ist eine Nib mit einem Fenster und einem dazugehörigen Controller (ControllerA). Auf dem Fenster ist ein Button, der auf Klick eine Action im Controller (A) triggert. Die Action soll einen weiteren Controller (ControllerB) erzeugen, der dann automatisch eine weitere Nib lädt. Klickt der User nochmals auf den Button soll der Controller (B) wieder erzeugt werden und die Nib nochmals laden. Das zu realisieren ist ja kein Problem - aber dies so zu gestalten, dass das Ganze keine Memorymanagementfehler enthält ist nicht so einfach - für mich.
Hier mein Versuch:
ControllerAs Action zum Erzeugen des ControllerB:
Also - controllerB ist eine Instanzvariable vom Typ ControllerB. ControllerAs init-Methode setzt controllerB auf nil. Klickt der User nun auf den Button wird die Action getriggert. Falls controllerB noch nil ist bedeutet dies, dass er ControllerB erzeugt werden muss. Ist er ungleich nil bedeutet es, dass es schon einen ControllerB geben muss, der allerdings nicht benötigt wird -> ihm wird ein release geschickt.
Im dealloc von ControllerA wird controllerB, falls dieser != nil released.
Ist das so okay? Bin mir da total unsicher, ob das so die gängige Praxis ist...
bezugnehmend auf diesen Thread: osxentwicklerforum.de/thread.php?threadid=5435 möchte ich eine Frage bzgl. der Speicherverwaltung stellen.
Vorhanden ist eine Nib mit einem Fenster und einem dazugehörigen Controller (ControllerA). Auf dem Fenster ist ein Button, der auf Klick eine Action im Controller (A) triggert. Die Action soll einen weiteren Controller (ControllerB) erzeugen, der dann automatisch eine weitere Nib lädt. Klickt der User nochmals auf den Button soll der Controller (B) wieder erzeugt werden und die Nib nochmals laden. Das zu realisieren ist ja kein Problem - aber dies so zu gestalten, dass das Ganze keine Memorymanagementfehler enthält ist nicht so einfach - für mich.
Hier mein Versuch:
ControllerAs Action zum Erzeugen des ControllerB:
Also - controllerB ist eine Instanzvariable vom Typ ControllerB. ControllerAs init-Methode setzt controllerB auf nil. Klickt der User nun auf den Button wird die Action getriggert. Falls controllerB noch nil ist bedeutet dies, dass er ControllerB erzeugt werden muss. Ist er ungleich nil bedeutet es, dass es schon einen ControllerB geben muss, der allerdings nicht benötigt wird -> ihm wird ein release geschickt.
Im dealloc von ControllerA wird controllerB, falls dieser != nil released.
Ist das so okay? Bin mir da total unsicher, ob das so die gängige Praxis ist...
Die Objective-Cloud ist fertig wenn sie fertig ist. Beta heißt Beta.
Objective-C und Cocoa Band 2: Fortgeschrittene
Cocoa/Objective-C Seminare von [co coa:ding].
Objective-C und Cocoa Band 2: Fortgeschrittene
Cocoa/Objective-C Seminare von [co coa:ding].