iPhone中的图片加载问题? - 来自webservice

时间:2009-08-06 23:38:53

标签: iphone cocoa-touch

imgBiteSpot.clipsToBounds=YES; 
    NSData *imageData = [[[NSData alloc]init]autorelease];
    imageData = [NSData dataWithContentsOfURL:[NSURL URLWithString:ObjBitSpot.StrImagePath]];
    if(imageData==0)
    {
        imgBiteSpot.image=[UIImage imageNamed:@"img-not-found.gif"];
    }
    else {
        UIImage *imgs = [[UIImage alloc] initWithData:imageData];
        UIGraphicsBeginImageContext(CGSizeMake(88,88));
        [imgs drawInRect:CGRectMake(0.0, 0.0, 88.0, 88.0)];
        UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
        imgBiteSpot.image=newImage;
        [imgs release];
    }

<小时/> 我已将图片加载到imgBiteSpot。 图像从Web服务加载。问题是需要花费太多时间(35秒到1分钟)。

如果我删除图片 - &gt;代码/负载,反应时间仅为0.2秒。

减少图像加载过程的时间是什么?

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

你正在使用NSData的方法dataWithContentsOfURL:,它从服务器同步加载数据,因此阻塞线程直到收到图像。

您应该做的是将空白或“加载”图像加载到UIImage中,然后使用NSURLConnection异步下载图像并在完成后显示它。请参阅NSURLConnection参考和URL Loading System文档。

答案 1 :(得分:1)

我编写了RemoteImage类来异步加载网络上的图像。它还可以在必要时释放内存。请参阅此帖子:http://www.dimzzy.com/blog/2009/11/remote-image-for-iphone/