如何提高UICollectionView的效率?

时间:2013-07-05 17:36:50

标签: ios performance memory uicollectionview memory-efficient

我有一个iOS应用程序,其中有一个集合视图,其中最多可包含几百个单元格。每个单元格中有5个视图,4个UILabel和1个UIImageView。当我正常运行应用程序时,每当我滚动几行时,应用程序都会使用荒谬的内存量。如在3行的大约5Mb的内存中。我尝试删除cellForItemAtIndexPath中的所有代码,使集合视图控制器看起来像这样:

    #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

然而,该应用程序仍然在滚动时使用荒谬的数据量。当我打开单元格的故事板视图并删除单元格中的所有视图并再次测量我的应用程序内存使用情况时,在滚动空单元格时没有内存使用情况。我可以看到实际上是基于滚动条移动的单元格。

所以关键是单元格中的视图占用了大量内存,而我没有做任何事情接受将它们放在应用程序故事板中的单元格中。

我的问题是,我该如何解决这个问题?我做了一件荒谬的错事吗?

1 个答案:

答案 0 :(得分:0)

细胞中的图像有多大?图像是吃记忆的东西。你是如何加载图像的?使用imageNamed:会将图像缓存在内存中。如果您使用imageWithContentsOfFile:,则不会缓存内容。