Ok, um einen Zeiger loszulassen, der nil ist?

7

Wenn ich beim Erstellen des Objekts ein neues Objekt mit zwei Objektzeigern (siehe unten) erstelle, werden die Zeiger auf null gesetzt;

%Vor%

Wenn ich (aus irgendeinem unerwarteten Grund) diese Zeiger nicht zuweiße und sie später in meiner Dealloc-Methode freigebe, ist das in Ordnung, ich bin mir ziemlich sicher, dass es so ist, wollte nur überprüfen?

%Vor%

Gary

    
fuzzygoat 01.10.2009, 12:31
quelle

4 Antworten

22

Wenn Sie eine Nachricht an nil senden, wird kein Fehler verursacht. Sie müssen sicherstellen, dass die Zeiger tatsächlich Null sind - das Senden einer Nachricht an einen Abfallzeiger verursacht wahrscheinlich Fehler.

    
Adam Wright 01.10.2009, 12:36
quelle
7

Ja, Sie können das tun, weil Sie eine Nachricht (zB release ) sicher an nil senden können und es wird nichts unternommen.

    
gavinb 01.10.2009 12:37
quelle
1

Wenn Sie die Accessor-Eigenschaft verwenden, um Ihre Methoden zum Abrufen / Festlegen zu erstellen:

%Vor%

Und in Ihrer .m-Datei:

%Vor%

Sie können dann Ihre Variable in dealloc auf null setzen. Dies wird in der Tat rufen Sie Ihre Setter und dekrementieren die Referenzzahl um eins und räumen auf.

    
Vincent 01.10.2009 12:50
quelle
0

In Objective-C ist es wichtig, zwischen Objekten und Variablen zu unterscheiden. Sie können keinen Zeiger (den Wert einer Variablen) freigeben, Sie können nur ein Objekt freigeben (das Objekt, auf das sich ein Zeiger bezieht). Ein Nullzeiger bezieht sich auf kein Objekt, so dass Nachrichten, die an null gesendet werden, nichts tun (was normalerweise sicher ist).

    
Jens Ayton 01.10.2009 16:51
quelle

Tags und Links