2013-07-05 137 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