如何使用AsyncImageView一次加载越来越多的图像来管理内存?

时间:2015-07-01 07:17:32

标签: ios objective-c memory-management asynchronous imageview

请提供解决方案,了解如何使用AsyncImageView一次从URL加载多个图像?因为图像加载时会出现一些内存问题。并且有超过500个图像来自Web服务

这是我的代码:

Maindict in 500 record

CGSize viewwidth=[[UIScreen mainScreen] bounds].size;
int size = (viewwidth.width/3)-10;
float x=(viewwidth.width-(size*3))/4;
float y=(viewwidth.width-(size*3))/4;

for (int i=0; i<Maindict.count; i++)
{
    AsyncImageView *Galleryimg = [[AsyncImageView alloc]initWithFrame:CGRectMake(x,y,size,size)];
    Galleryimg.contentMode = UIViewContentModeScaleAspectFill;
    Galleryimg.clipsToBounds=YES;
    Galleryimg.tag=i;
    Galleryimg.imageURL=[NSURL URLWithString:[[[Maindict valueForKey:@"image"]objectAtIndex:i]stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
    [scroll addSubview:Galleryimg];
    if((i+1)%3==0 && i!=0)
    {
        y=y+(size+(viewwidth.width-(size*3))/4);
        x=(viewwidth.width-(size*3))/4;
    }
    else
    {
        x=x+(size+(viewwidth.width-(size*3))/4);
    }
}
scroll.contentSize=CGSizeMake(viewwidth.width,y+(size+(viewwidth.width-(size*3))/4));

2 个答案:

答案 0 :(得分:0)

您一次可以创建500张图像。我认为你应该在需要显示或使用它时创建图像。

您可以检测显示矩形何时接近图像位置,并在此时创建图像。

只是想法,但希望它有所帮助

答案 1 :(得分:-1)

试图在移动设备上同时加载500多张图片是一个非常糟糕的主意。它会快速耗尽设备的电池。你会收到很多低记忆警告。你需要延迟加载图片。

我发现您已经在使用scrollview来显示这些图像。您应该使用tableview或集合视图而不是scrollview。它们也是scrollview的子类。你应该开始在

中的单元格上下载图像
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

uitableview的数据源方法。