@interface foo: NSObject
@property (nonatomic, retain) NSMutableArray *aMutableArray;
@end
@implementation
@synthesize aMutableArray
-(void)somefunction {
// Illustration
self.aMutableArray = [[[NSMutableArray alloc]init]autorelease];
self.aMutableArray = [[[NSMutableArray alloc]init]autorelease];
self.aMutableArray = [[[NSMutableArray alloc]init]autorelease];
}
@end
Я сделал код, аналогичный коду в других частях моей программы, но я должен был быть уверен, что это не приведет к утечке памяти.С моим пониманием autorelease
этот объект освобождается правильно, верно?
[EDIT - добавлен вопрос] Хотя один вопрос: у свойства выше есть атрибут retain, поэтому, когда компилятор создаетфункция установки, код установки будет выглядеть примерно так:
somecode..
retain newObj
release oldObj
somecode..
В приведенном выше коде я назначил 3 объекта aMutableArray.Каждый раз, когда они присваиваются, функция setter сохраняет в newObj и release в oldObj.Итак, поскольку метод setter уже выполнил освобождение, возникнет ли проблема, когда авто-релиз включится, чтобы освободить объект во второй раз?