1

我有一个 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

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

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

我的问题是,我该如何解决这个问题?我在做一些荒谬的错误吗?

4

1 回答 1

0

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

于 2013-07-05T18:41:24.023 回答