Zombie dikirimi pesan oleh [jumlah array]

Saya memiliki array ivar yang dapat diubah yang saya atur di viewDidLoad sebagai berikut:

names = [NSMutableArray arrayWithCapacity:30];
[names addObject:@"Joe"];
[names addObject:@"Dom"];
[names addObject:@"Bob"];

Kemudian dalam metode selanjutnya, dengan mengetuk tombol, saya melakukan hal berikut, tetapi array tampaknya terlalu banyak dilepaskan... dengan pesan Zombie:

int r = arc4random() % [names count];
NSLog(@"%d", r);

Bagaimana cara memperbaikinya?

Terima kasih.


person joec    schedule 09.10.2010    source sumber


Jawaban (1)


+arrayWithCapacity: akan mengembalikan objek yang dirilis secara otomatis, yaitu dalam "metode selanjutnya" objek ini kemungkinan sudah dibatalkan alokasinya. Anda perlu menyimpan objek ini agar tersedia "nanti".

names = [[NSMutableArray arrayWithCapacity:30] retain];

(kalau tidak,

names = [[NSMutableArray alloc] initWithCapacity:30];

)

Jangan lupa rilis di -dealloc.

-(void)dealloc {
   [names release];
   ...
   [super dealloc];
}
person kennytm    schedule 09.10.2010
comment
Dengan asumsi names adalah iVar dan ada penyetel yang sesuai atau @property, self.names = [NSMutableArray array]; juga akan berfungsi. - person bbum; 09.10.2010