2011-09-16 74 views
1

我有一個具有1000個元素的UITableView。儀器首次加載前顯示2.20MB字節仍然存在。充電後顯示4.82MB。當我釋放內存並返回到以前的狀態時,它顯示4.71MB。但現在當我加載同一張表時,Instruments再次顯示4.82MB。 UITableView的結構是否存儲在緩存中?如果是的話,有什麼方法可以釋放這個內存?UITableView元素緩存

我的表結構:

(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

    static NSString *MyIdentifier = @"SearchResult"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier]; 

    if (cell == nil) { 
     cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:MyIdentifier] autorelease]; 
    } 

    if(!isSomeStateSearching) cell.textLabel.text = [[[contentSomeState objectAtIndex:indexPath.section] objectForKey:@"rowValues"] objectAtIndex:indexPath.row]; 
    else 
    { 
     cell.textLabel.text = [searchedAllContent objectAtIndex:indexPath.row]; 
    } 

    UIView *v = [[[UIView alloc] init] autorelease]; 
    v.backgroundColor = [UIColor colorWithRed:188/255.0 green:57/255.0 blue:25/255.0 alpha:1.0]; 
    cell.selectedBackgroundView = v; 

    UIImageView *arrow = [[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"seta_navegacao"]] autorelease]; 
    cell.accessoryView = arrow; 

    return cell; 
} 

回答

0

當然,你用你的UITableViewCell正確的複用機制,對不對?

+0

是的,我會加入到問題中。 – flopes

0

您應該僅在初始化新單元格時分配和添加單元格子視圖。就目前而言,每次單元重用時都會創建新的視圖和圖像視圖。這就是爲什麼你的桌子佔用了太多內存。

+0

這個問題沒有佔用太多的內存。問題是內存最終沒有釋放。我可以在代碼的最後對視圖和圖像視圖發表評論,並且問題仍然存在。 – flopes