我的应用程序正在从服务器下载图像包。它是来自XML的直接链接(20-50个文件)的数组。
我目前使用的代码在下载中断或应用程序关闭时不太安全。在后台线程中,我为每个文件调用此方法:
(BOOL) loadImageFromURL:(NSString *)url withName:(NSString *)filename toFolder:(NSString *)folder {
NSURL *link = [NSURL URLWithString:url];
NSFileManager *manager = [NSFileManager defaultManager];
NSString *filepath = [folder stringByAppendingPathComponent:filename];
if ([manager fileExistsAtPath:filepath]) {
return YES;
}
else
{
UIImage *image = [[UIImage imageWithData:[NSData dataWithContentsOfURL:link]] retain];
NSData *data = [NSData dataWithData:UIImageJPEGRepresentation(image, 1.0f)];
if ([data length] <= 0)
[image release];
return NO; // no data
else
{
[data writeToFile:filepath atomically:YES];
[image release];
return YES;
}
}
}发布于 2011-04-26 09:17:48
使用so操作这样做。
看看blow 链接..。
http://www.cimgf.com/2008/02/16/cocoa-tutorial-nsoperation-and-nsoperationqueue/
现在,在2012年8月,尝试搜索wwdc 2012视频编号211来学习ns操作性。你可以用块来做。
[aNsque addExecutionBlock:^{ ...code... }];其中aNsque是nsblockoperation操作。
发布于 2011-04-26 09:21:39
不要使用同步调用dataWithContentsOfURL。相反,看看如何使用NSURLConnection,-initWithRequest:代表:的异步方法
然后可以用[connection cancel];取消请求,也不必在另一个线程上运行它,因为它已经是异步的。
至于运行多个请求,您可能有几个选项。一个想法是创建一个启动NSURLConnection并解析响应的对象,然后创建一个这些对象的数组。
https://stackoverflow.com/questions/5788253
复制相似问题