0

我有一个 ivar 可变数组,我在 viewDidLoad 中设置如下:

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

然后在稍后的方法中,点击一个按钮,我执行以下操作,但数组似乎过度释放......与 Zombie 消息:

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

我该如何解决?

谢谢。

4

1 回答 1

5

+arrayWithCapacity:将返回一个自动释放的对象,即在“稍后的方法”中,该对象可能已经被释放。您需要保留此对象以使其“以后”可用。

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

(或者,

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

)

不要忘记将其发布到-dealloc.

-(void)dealloc {
   [names release];
   ...
   [super dealloc];
}
于 2010-10-09T16:41:31.910 回答