Сообщение о зомби от [array count] - PullRequest
0 голосов
/ 09 октября 2010

У меня есть изменяемый массив ivar, который я настраиваю в viewDidLoad следующим образом:

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

Затем, в более позднем способе, нажатием кнопки я делаю следующее, но массив, кажется, перевыпускается ... с сообщением Zombie:

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

Как мне это исправить?

Спасибо.

1 Ответ

5 голосов
/ 09 октября 2010

+arrayWithCapacity: вернет автоматически освобожденный объект, т. Е. В «более позднем методе» этот объект, вероятно, уже освобожден.Вам необходимо сохранить этот объект, чтобы сделать его доступным «позже».

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

(или

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

)

Не забудьте выпустить его в-dealloc.

-(void)dealloc {
   [names release];
   ...
   [super dealloc];
}
...