2014-05-08 30 views
0

我是具有自定義UITableviewcells的UiTableview。通過UITableview-Cells不會取消分配時滾動的內存增加

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
static NSString *CellIdentifier = @"Cell"; 
AssortmentTableViewCell *cell = (AssortmentTableViewCell*)[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

Breads *bread = [self.fetchedResultsController objectAtIndexPath:indexPath]; 
cell.breadName.text = bread.name; 
cell.breadImageOutlet.image = [UIImage imageNamed:bread.breadimage]; 
cell.selectionStyle = UITableViewCellSelectionStyleNone; 

return cell; 
} 

當我滾動瀏覽Tableview時,內存急劇增加。看來,這些細胞不會被重複使用。當Tableview消失時,內存不會被釋放。我使用IOS7/xcode5。

可能是什麼錯誤?
有關說明,我將不勝感激。

+0

你可以嘗試評論這一行,並檢查內存上升是否有什麼不同? cell.breadImageOutlet.image = [UIImage imageNamed:bread.breadimage]; –

+0

我註釋掉了這一行,現在內存增加量很低。但形象非常重要。有沒有可能使圖像的內存增加很少?此外圖像是非常大的(500-700kb).. – mkersche17

+0

爲什麼圖像這麼大?這些圖像不是縮略圖大小嗎?你提到的大小的大圖不應該在UITableView中使用。你需要考慮重新設計你的應用程序。只需在tableview中使用小尺寸縮略圖,並讓用戶點擊單元格以顯示大圖像即可成爲實現此目的的一種方式。 –

回答

0

這可能是由UIKit緩存圖像引起的,不需要擔心,因爲如果內存不足,緩存將被刷新。當在表格視圖中上下滾動時,內存使用是否繼續無限增加?如果是這樣的話,那麼在AssortmentTableViewCell的實現中可能是一個錯誤。

+0

不,只有當我第一次向下滾動時,內存纔會增加。當我上下滾動內存級別保持不變。是否有可能清理緩存? – mkersche17

+0

http://stackoverflow.com/questions/5986177/is-there-a-way-to-clear-the-cache-used-by-uiimage-class]表明你可以使用'[[ image removeFromCache]'或'[UIImage removeImageNameFromCache:@「imageName」]''。或者,您可以使用'imageWithContentsOfFile'而不是'imageNamed'加載圖像。操作系統應該清理緩存,所以我不會擔心它,除非你看到性能問題。 – user3615737