Użyj autorelease przed dodaniem obiektów do kolekcji?
Przeglądałem pytania zadane w StackOverflow, ale w Objective-C jest tak dużo zarządzania pamięcią, że nie mogłem znaleźć odpowiedzi, której szukałem.
Pytanie brzmi, czy jest w porządku (i zalecane) wywołanie autorelease przed dodaniem nowo utworzonego obiektu do kolekcji (np. NSMutableArray)? Czy powinienem wydać go wyraźnie po dodaniu. (Wiem, że NSMutableArray zachowa obiekt)
To ilustruje moje pytanie:
Scenariusz A (autorelease):
- (void) add {
// array is an instance of NSMutableArray
MyClass *obj = [[[MyClass alloc] init] autorelease];
[array addObject:obj];
}
Scenariusz B (jawne wydanie):
- (void) add {
// array is an instance of NSMutableArray
MyClass *obj = [[MyClass alloc] init];
[array addObject:obj];
[obj release];
}
Zakładam, że oba są poprawne, ale nie jestem pewien i na pewno nie wiem, jaki jest preferowany sposób.
Czy guru Objective-C mogą rzucić na to trochę światła?