释放已分配UIViews的NSMutableArray是否会释放UIViews?
问题描述:
好吧,这就是我在做什么。释放已分配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?
答
如果copy
,alloc
,retain
,或new
东西,你是负责发送,要么release
或autorelease
。
你说[[UIView alloc] init...]
所以你必须release
生成的对象。
答
您有责任在您创建视图后发布视图。这是怎么回事:
您创建保留计数为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];
作为一个侧面说明,意见将在这种情况下,的确可以与阵列的最终版本发布。 – 2011-05-05 19:59:49