Release, Dealloc und die Selbstreferenz

Also dachte ich, ich hätte all diese Fragen herausgefunden. Dann bekomme ich plötzlich einen Fehler (einen Absturz), den ich nicht herausfinden kann. Nachdem ich nachgeforscht habe, um den Absturz zu beheben, stelle ich fest, dass alles, was ich über diese kritischen Bereiche zu wissen glaubte, etwas falsch ist.

Im Folgenden sind 8 Fragen aufgeführt, die ich nur in der Hoffnung, dass jemand darauf antwortet, aufgreifen möchte. Die Antworten auf diese Fragen werden mir dabei helfen, mein Verständnis wieder auf den richtigen Weg zu bringen. Vielen Dank im Voraus!

F1) Ist es in Ordnung, Release für ein Objekt aufzurufen, wenn diese Referenz null ist? Das sollte harmlos sein, oder?

F2) Ist es in Ordnung, Release für ein Objekt aufzurufen, wenn diese Referenz freigegeben wurde und als Referenzanzahl 0?

F3) Ist es notwendig, einen Verweis auf NULL zu setzen, nachdem Sie ihn freigegeben haben? Was passiert, wenn Sie den Wert nicht auf Null setzen?

F4) Gibt es wirklich einen Unterschied zwischen null und null, oder ist es nur eine semantische Sache, dem Leser / Entwickler den Objekttyp durch einen Blick darauf zu erkennen?

F5) Verwenden von Eigenschaften ERFORDERN Sie die Verwendung des 'Self'-Zeigers?

F6) Die Verwendung von Instanzvariablen erfordert, dass der 'Self'-Zeiger NICHT verwendet wird.

F7) Wann würde ich jemals eine Instanzvariable anstelle ihrer Eigenschaft verwenden wollen? Ich stelle mir vor, dass Datentypmitglieder in Ordnung sind, da sie nicht freigegeben und beibehalten werden.

F8) Muss die Freigabe eines Objekts innerhalb der Freigabe-Funktion aufgerufen werden? In vielen Beispielen habe ich gesehen, wie Release aufgerufen wurde, aber nicht Dealloc - sind solche Tutorials falsch?

Antworten auf die Frage(5)

Ihre Antwort auf die Frage