Autorelease vor dem Hinzufügen von Objekten zu einer Sammlung verwenden?

Ich habe die in StackOverflow gestellten Fragen durchgesehen, aber in Objective-C gibt es so viele Fragen zur Speicherverwaltung, dass ich die gesuchte Antwort nicht finden konnte.

Die Frage ist, ob es in Ordnung ist (und empfohlen wird), autorelease aufzurufen, bevor Sie ein neu erstelltes Objekt zu einer Sammlung hinzufügen (wie z. B. NSMutableArray). Oder soll ich es nach dem Hinzufügen explizit freigeben. (Ich weiß, dass NSMutableArray das Objekt behalten wird.)

Dies illustriert meine Frage:

Szenario A (Autorelease):

- (void) add {
   // array is an instance of NSMutableArray

   MyClass *obj = [[[MyClass alloc] init] autorelease];

   [array addObject:obj];
}

Szenario B (explizite Freigabe):

- (void) add {
   // array is an instance of NSMutableArray

   MyClass *obj = [[MyClass alloc] init];

   [array addObject:obj];

   [obj release];
}

Ich gehe davon aus, dass beide richtig sind, aber ich bin mir nicht sicher und ich weiß nicht, wie es am liebsten ist.

Können die Objective-C-Gurus etwas Licht ins Dunkel bringen?

Antworten auf die Frage(7)

Ihre Antwort auf die Frage