我有一个带有应用内下载功能的应用程序。我成功地通过以下方式下载MP3文件:
NSData *data1 = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://.../somefile.mp3"]];
[data1 writeToFile:filePath atomically:YES];
但是在执行这段代码的过程中,实际上存在着非常大的暂停时间。我该如何计算下载进度,并通过进度条来显示它?
我有一个带有应用内下载功能的应用程序。我成功地通过以下方式下载MP3文件:
NSData *data1 = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://.../somefile.mp3"]];
[data1 writeToFile:filePath atomically:YES];
dataWithContentsOfURL:
是一个阻塞调用。这意味着它将阻塞正在运行的线程。NSURLConnection
。NSURLConnection
,您可以异步执行下载请求,从而防止阻止主线程。NSURLConnectionDelegate
方法来了解下载进度、保存数据以及了解成功或失败信息。NSURLConnection
。你应该真正关注ASIHTTPRequest,特别是this section
它提供了回调函数来跟踪您的下载、异步和同步连接、队列、缓存以及许多好东西。