【问题标题】:iOS downloading a lot of images, best possible solutioniOS下载大量图像,最好的解决方案
【发布时间】:2015-04-28 06:54:11
【问题描述】:
前段时间我发过这个问题:
Cordova / Phonegap downloading a lot of images, best possible solution
但没有人真正回答这个问题。
我决定做同样的应用程序,但现在在 Objective C 中。
但我仍然有同样的问题:)
所以,我有使用 Objective C 和 XCode 开发的 iOS 应用程序。
这个应用程序应该可以离线和在线工作。
如果用户是第一次启动应用程序,他会看到进度条,所有数据和图像都会被提取并下载到他的设备上。
在该进程应用程序重新加载(重新启动)之后
确实可以,但是我觉得第一次启动app太慢了(超过800张图片)需要7分钟以上,这对用户体验来说真的很糟糕。
以下是我的一些策略:
哪种策略最好?也许有人有类似的经历?
【问题讨论】:
标签:
ios
xcode
image
download
【解决方案3】:
你已经得到了一些很好的答案。
你在开始时只下载其中一些的想法也很好。
我建议您使用混合方法。
当应用启动时,您检查您拥有的图像并开始在低优先级的后台线程上下载其余图像,以便应用正常运行。
此外,您还可以正常打开应用程序,每次需要显示图像时检查是否有,如果没有,请立即下载。得到一个应该很快。
您没有向我们提供有关您的应用的太多详细信息,但您也可以将应用中的所有图像捆绑在一起(如果它们根本没有变化)。并对应用进行良好的描述,以便用户知道为什么应用如此之大。
【解决方案4】:
我最近遇到了同样的问题。我做了程序目录,我必须在第一次启动应用程序时下载很多图像。我决定通过第一次运行上传所有图像,而不是动态加载它们,因为程序应该在离线模式下工作。我是通过AFNetworkingpod "AFNetworking", "~> 2.0" 做到的。
#import <AFNetworking/AFNetworking.h>
NSMutableArray *imageURLs = [[NSMutableArray alloc] init]; //URLs to your images
NSOperationQueue *operationQueue = [[NSOperationQueue alloc] init];
[operationQueue setMaxConcurrentOperationCount:3];
NSString *cacheDir = [NSSearchPathForDirectoriesInDomains
(NSCachesDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSMutableArray *operations = [[NSMutableArray alloc] init];
for (int i=0; i<imageURLs.count; i++){
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:imageURLs[i]]];
AFURLConnectionOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
NSString *filePath = [cacheDir stringByAppendingPathComponent:@"yourImageName.png"];
operation.outputStream = [NSOutputStream outputStreamToFileAtPath:filePath append:NO];
[operation setCompletionBlock:^{
NSLog(@"Image downloaded");
}];
[operations addObject:operation];
}
[operationQueue addOperations:operations waitUntilFinished:NO];