2011-05-05 64 views
0

好吧,这就是我在做什么。释放已分配UIViews的NSMutableArray是否会释放UIViews?

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

如果copyallocretain,或new东西,你是负责发送,要么releaseautorelease

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

2

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

您创建保留计数为1的视图。 当它们被添加到数组时,它将保留它们(保留计数= 2)。 当您释放数组时,它将释放视图(保留计数= 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]; 
+0

作为一个侧面说明,意见将在这种情况下,的确可以与阵列的最终版本发布。 – 2011-05-05 19:59:49