2010-12-07 54 views
0

Leaks乐器在某些代码上发出警报,但我不知道如何在不使应用程序崩溃的情况下解决泄漏问题。下面是一些代码总结我的做法,需要反思的书面前一段时间,并明确:如何处理子视图内存泄漏?

labels = [[NSMutableArray alloc] init]; 

for(int i = 0; i < 10; i++) { 
    // calculate x and y... 
    label = [[UILabel alloc] initWithFrame:CGRectMake(x, y, 70, 15)]; 
    // customize label... 
    [labels addObject:label]; 
    [label release]; 
    [self addSubview:[labels objectAtIndex:i]]; 
} 

为什么有标签的NSMutableArray麻烦呢?后来,在其他的方法,我需要改变标签的字母,它的方便,可以说

[[labels objectAtIndex:num] setAlpha:0.5]; 

相信发生泄漏,因为唱片公司没有得到正常的应用程序生命周期中dealloc'ed ,只有当超级观点在戒烟时被解除。

帮助!

谢谢。

回答

0

这可能是因为你没有释放标签数组。那么在for循环之后释放标签数组,然后使用.tag在UIView上设置标签并稍后通过.tag使用viewWithTag来设置Alpha?

labels = [[NSMutableArray alloc] init]; 

for(int i = 0; i < 10; i++) { 
    // calculate x and y... 
    label = [[UILabel alloc] initWithFrame:CGRectMake(x, y, 70, 15)]; 
    label.tag = 100; 
    // customize label... 
    [labels addObject:label]; 
    [label release]; 
    [self addSubview:[labels objectAtIndex:i]]; 
} 

[labels removeAllObjects]; 
[labels release]; 

再后来

(UILabel*) [[self.view viewWithTag:100] setAlpha:0.5]; 
+0

我去的更远一些的方法 - 决定不带标签阵列和刚刚添加的标签与标签= 100 +我一个子视图打扰,然后释放它,在循环的每次迭代中。 – ed94133 2010-12-08 08:45:18