我正在开发一个从互联网上下载一些数据的项目,但每当我打开包含下载代码的视图时,应用程序会冻结/暂停,直到下载完毕。
哪里(在哪种方法下)是必须编码的最佳位置,以便应用程序在下载时不会暂时冻结/暂停?
这就是我现在正在使用的:
UERootArray = [[NSArray alloc] initWithContentsOfURL:[NSURL URLWithString:@"url to file"]];
提前致谢。
答案 0 :(得分:0)
您可能正在同步下载。唐'吨。始终异步下载;这意味着下载发生在后台,主线程之外,并且不会冻结您的界面。
这里重写了您的代码(仅限iOS 7),可以异步执行此操作:
NSURL* url = [NSURL URLWithString:@"url to file"];
NSURLSession* session = [NSURLSession sharedSession];
NSURLSessionDownloadTask* task = [session downloadTaskWithURL:url completionHandler:^(NSURL *loc, NSURLResponse *response, NSError *error) {
dispatch_async(dispatch_get_main_queue(), ^{
self.myarray = [[NSArray alloc] initWithContentsOfURL:loc];
});
}];
[task resume];