2010-12-07 45 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