2013-07-05 176 views
1

我有一個iOS應用程序,其中有一個集合視圖,最多可以有幾百個單元格。每個單元格有5個視圖,4個UILabels和1個UIImageView。當我通常運行應用程序時,每當我滾動幾行時,應用程序會使用荒謬的內存量。就像在3行的大約5Mb的內存中一樣。我試圖消除所有的代碼在cellForItemAtIndexPath使得集合視圖控制器是這樣的:如何提高UICollectionView效率?

#import "CollectionView.h" 

    @implementation CollectionView 

    - (NSInteger)collectionView:(UICollectionView *)view numberOfItemsInSection:(NSInteger)section { 
     return 100; 
    } 

    - (UICollectionViewCell *)collectionView:(UICollectionView *)cv cellForItemAtIndexPath:(NSIndexPath *)indexPath { 
static NSString *CellIdentifier = @"Story_Cell_Small"; 
Cell *cell = [cv dequeueReusableCellWithReuseIdentifier:CellIdentifier forIndexPath:indexPath]; 
return cell; 
    } 

    @end 

然而,應用程序仍然在滾動使用荒謬的數據。當我打開單元格的故事板視圖並刪除單元格中的所有視圖並再次測量儀器中的應用程序內存使用情況時,在滾動空單元格時沒有內存使用情況。我可以看到實際上基於滾動條移動的單元格。

所以問題是單元格中的視圖使用了大量的內存,而我沒有做任何接受將它們放置在應用程序故事板中的單元格中。

我的問題是,我該如何解決這個問題?我在做一件荒謬的事情嗎?

+0

3行是多少個單元格?記憶是你唯一的擔憂,還是在滾動時呆滯? –

+0

我說的是行時的意思,對不起。我已經啓用了分頁功能,並且滾動功能非常流暢,除非我儘可能快地滾動頁面,甚至不會太糟糕。這真的只是內存問題。 – harryisaac

回答

0

單元格中的圖像有多大?圖像是吃內存的東西。你是如何加載圖像?使用imageNamed:將圖像緩存在內存中。如果使用imageWithContentsOfFile:,則不會緩存內容。

+0

我實際上是通過名爲EGOImageLoader的背景圖片加載代碼加載它們。這不是問題,因爲當我刪除圖像和圖像的代碼時,很少量的內存被保存。 – harryisaac