发布分配了UIViews的NSMutableArray会释放UIViews吗?

时间:2011-05-05 19:41:24

标签: iphone memory-management uiview nsmutablearray

好的,这就是我正在做的事情。

NSMutableArray *array = [[NSMutableArray alloc] init];  

UIView *tempview = [[UIView alloc] initWithFrame:CGRectMake(15, 30, 320, 460)];
[array addObject:tempView];

UIView *tempview2 = [[UIView alloc] initWithFrame:CGRectMake(15, 30, 320, 460)];
[array addObject:tempView2];

[array release];

是否会释放数组,同时释放两个分配的UIViews?

2 个答案:

答案 0 :(得分:2)

如果您copyallocretainnew某事,您有责任发送release或{{1 }}

autorelease所以必须[[UIView alloc] init...]生成的对象。

答案 1 :(得分:2)

您有责任在创建视图后发布视图。这是怎么回事:

您创建保留计数为1的视图。 当它们被添加到数组中时,它将保留它们(保留计数= 2)。 释放数组时,它将释放视图(保留count = 1)。 你仍然需要释放它们。

正确的代码是:

NSMutableArray *array = [[NSMutableArray alloc] init];  

UIView *tempview = [[UIView alloc] initWithFrame:CGRectMake(15, 30, 320, 460)];
[array addObject:tempView];
[tempview release];

UIView *tempview2 = [[UIView alloc] initWithFrame:CGRectMake(15, 30, 320, 460)];
[array addObject:tempView2];
[tempview2 release];

[array release];