Ste*_* J. 3 iphone performance get uiimage asihttprequest
我有一个方法,我打电话来使用GET发出Web服务请求.它看起来像这样:
- (UIImage*)getImageWithSeriesGUID:(NSString*)seriesGUID ImageID:(int)imageID {
NSString * unescapedString = RIVERWOODS_GET_IMAGE(seriesGUID, imageID);
NSURL *url = [[NSURL alloc] initWithString:[unescapedString stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding]];
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request setRequestMethod:@"GET"];
[request addRequestHeader:@"Connection" value:@"Keep-Alive"];
[request startSynchronous];
NSError *error = [request error];
if (!error) {
NSData *response = [request responseData];
//NSLog(@"Size: %@",[response length]);
NSString *content = [[[NSString alloc] initWithData:response
encoding:NSUTF8StringEncoding] autorelease];
NSLog(@"Data: %@", content);
UIImage *image = [UIImage imageWithData:response];
return image;
}
return nil;
}
Run Code Online (Sandbox Code Playgroud)
这种方法可行,但它真的很慢.另一方面,我正在迭代for循环,所以如果我需要收集的图片数组有20个图像,这个方法会被调用20次.我希望提高这个过程的效率,我想我应该能够在这个方法中迭代我需要收集的所有图像ID.
在我看来,这种情况变得如此缓慢的原因是因为我们不断打开和关闭的多个请求.我提到的图像平均约为15kb.
我的问题:我可以做些什么来改变这种方法,以便我可以提高效率并利用HTTP保持活动功能?我在想,不是传入图像ID,而是传递我需要制作的数组的计数,然后在请求方法中设置一些类型的for循环,然后允许我传回来一系列图像......
这是要走的路吗?有什么我想念的吗?感谢您的帮助和投入!
之所以这么慢,是因为你正在同步地执行请求(无论如何都是一无所有),一个接一个.您需要重构下载方法以异步和并发工作.
我以这种方式在线上请求数据的方法如下:
如果我是在我的电脑上我检查到github上这样的例子,但真的是唯一困难的部分是全球连接管理器,以及ASI*家伙写了一个很好的例子,在这里上gist.github.此外,上面(我从中学到的)的更好解释在这里.
归档时间: |
|
查看次数: |
1466 次 |
最近记录: |