2014-09-05 121 views
0

後,我有一個的UIViewController的UITableViewDelegate,UITableViewDataSource,NSFetchedResultsControllerDelegate協議。這個UIViewController包含UITableView其中我加載一些數據從核心數據。 加載的數據包括名稱,字幕圖片。 它們被設置,如:釋放內存留的UIViewController

cell.textLabel.text = [NSString stringWithFormat:@"%@", artist.title]; 
cell.detailTextLabel.text = [NSString stringWithFormat:@"%@ year", artist.year]; 
NSString *fileName = [NSString stringWithFormat: @"%@/%@", [[NSBundle mainBundle] resourcePath], artist.imageSmall]; 
cell.imageView.image = [UIImage imageWithContentsOfFile:fileName]; 

正如我以前想通,[UIImage的imageNamed:]緩存這導致內存泄漏的圖像。這就是爲什麼我在代碼中應用imageWithContentsOfFile方法的原因,我需要加載大尺寸圖像。它效果很好。但它似乎並沒有在我的UITableView工作正常。或者我做的錯誤原因:)

在這裏我的圖像不是很重,他們就像每個圖像20-40kb。沒關係,即使我按照UITableView加載50個圖像。大約需要5Mb的內存才能顯示,例如,每個類別有50位藝術家的照片。但我注意到的是,當我離開我的的ViewController,並通過另一indexPath再次加載它(我打開一些其他類小區,並打算從該類別查看藝術家)的應用程序使用的內存不斷提高。如果我瀏覽20個類別,那麼我會獲得100Mb的內存使用量。這看起來不像ARC工作正常。

所以,我怎樣才能釋放內存或從我的UIViewController後移後導致的UITableView?

回答

2

2個小時後,我發現溶液%)

我想出申報的UITableView爲(弱,非原子)代替(強,非原子)。 而在ViewDidDisappear方法我成功地調用

[self.tableView removeFromSuperview]; 

和內存釋放。