1

好吧,内存管理让我发疯!加载多个没有内存警告的本地映像

这里是我的问题:

我有n引用图像的plist中。 我只是试图做的是抓住每个孩子,并将其加载到UIImageView,它被添加到启用分页的UIScrollView。

我的问题:

  • 我有n个图像。可能只有3个,但可能是60个或更多。
  • 每张图片都有相当大的分辨率(1152x1536),因为它是可缩放的。

我读到CATiledLayer,看到PhotoScroller样品,但我想避免使用CATiledLayer因为它创造了一个淡入同时显示图像的作品,在我的项目,效果不适合。

我只是想听听你的意见,你通常如何解决这类任务?

我会离开这里一块我的代码:

UIImage * image; 
UIImageView * imageview; 

for (int i = 0; i < [data count]; i++) 
{ 
    image = [[UIImage alloc] initWithContentsOfFile:[NSString stringWithFormat:@"%@/%@", 
                [[NSBundle mainBundle] bundlePath], 
                [[data objectAtIndex:i] objectForKey:@"content"]]]; 

    [content addObject:image]; 

    imageview = [[UIImageView alloc] initWithImage: [content objectAtIndex:i] ]; 
    [imageview setTag:i+10]; 
    imageview.frame = CGRectMake(1024 * i, 0, 1024, 768); 

    [scroll addSubview: imageview]; 

    [imageview release]; 
    [image release]; 
} 

[scroll setContentSize:CGSizeMake(1024*[data count], 768)]; 

此代码使应用程序收到内存警告,当我尝试加载例如60张图片。

我想你明白了吧?

有什么建议吗?

感谢您的帮助提前!

回答

3

如果您想避免内存问题,则不应一次加载它们,只在需要时加载它们。要做到这一点,你可以按照苹果提供的例子,here

基本上,你所做的只是加载三个图像:现在显示的图像和放置在右侧和左侧的图像。然后,当您滚动时,让我们说到右侧,您将删除之前位于左侧的图像,并在右侧放置一个新图像。

+0

真的非常感谢男士,我会试一试,稍后再回来告诉你我做了什么! – 2012-02-14 11:15:13