Ich bin neu in Objective-C (und stackoverflow) und ich bin ein wenig um Best Practices in Bezug auf Eigenschaften gedreht.Eigenschaften in Dealloc: Release dann auf Null gesetzt? oder einfach
Mein Verständnis ist, dass wenn Sie vollständig mit einer Eigenschaft fertig sind, können Sie Fehler vermeiden, indem Sie sie freigeben und dann sofort auf Null setzen, so dass nachfolgende Nachrichten auch NULL anstelle einer Ausnahme zurückgeben.
[myProperty release], meineEigenschaft = null;
Wenn es jedoch um Dealloc für "kopieren" und "behalten" -Eigenschaften geht, gibt es keine Notwendigkeit, beides zu tun? oder macht eine einfache
[myProperty release] schneiden Sie es? Habe ich auch Recht, dass ich in dealloc keine "assign" -Eigenschaften freigeben muss?
Vielen Dank!
+1, dass die Veröffentlichung alles ist, was Sie brauchen, aber ich warnen vor der Verwendung von 'self.myProperty = nil' in' dealloc '(es könnte KVO-Methoden auslösen und Beobachter benachrichtigen, um auf ein teilweise freigegebenes Objekt zuzugreifen ...) –
Wie Dave sagt, ist die aktuelle Praxisempfehlung (von Apple), die Accessoren nicht dazu zu verwenden, in dealloc nil (und damit release) zuzuweisen. Es konnte nicht nur KVO-Methoden auslösen, sondern der Set-Accessor wurde möglicherweise von einer Unterklasse außer Kraft gesetzt. – JeremyP
Älter und klüger jetzt ... best practice scheint zu sein, self.myProperty = nil für IB outlet properties in viewDidUnload zu verwenden. Dies ermöglicht es ViewController, die Ansichtshierarchie wiederherzustellen, wenn sie durch einen geringen Speicher demontiert wurde. – averydev