/ / Ist dies erforderlich, um das Objekt vor der Zuweisung zu prüfen? - objektiv-c, programmiersprachen

Ist es notwendig, das Objekt vor der Zuweisung zu überprüfen? - Ziel-C, Programmiersprachen

Ziel c-Frage, ich habe einen Zeiger NSObject * abc; Ich habe es nicht in der init-Methode zugewiesen und initialisiert. Muss ich das in der Methode machen?

-(void)someThingElse{
if(abc != nil){
[abc release];
abc = nil;
}

abc = [[NSObject alloc] init];

}

Ist mein Fluss richtig? Danke dir.

Antworten:

6 für die Antwort № 1

Ihr Code könnte folgendermaßen vereinfacht werden:

[abc release];
abc = [[NSObject alloc] init];

weil

  • Senden einer -release Nachricht an nil tut nichts, also keine Notwendigkeit zu prüfen nil

  • keine Notwendigkeit zu setzen abc zu nil wenn Sie gerade dabei sind, es zuzuweisen

Sie können auch deklarieren abc als objektives Eigentum mit retain Semantik, in diesem Fall würden Sie nur Folgendes tun:

self.abc = [[[NSObject alloc] init] autorelease];

In beiden Fällen ist Ihre dealloc Methode sollte auch ein [abc release], Na sicher