iOS開發異步下載
異步下載支持應用程序在后臺下載數據,在等待下載完成的過程中不會阻塞代碼的運行,異步連接模型圖如下:
對比上篇的同步下載會發現,異步下載發起請求后不會等待接收完成數據,從圖中可以看到,異步下載也有三個步驟:
1、客戶端向服務器發起請求、服務器端接收請求并解析http參數.
2、應用程序在后臺下載數據,在這個過程中不會阻塞客戶端運行(可以認為,打開一個下載工具,就不用管了,下載失敗或下載完成,會有回調)
3、數據接收完成,如NSURLConnection的異步下載
NSURLConnection同步和異步唯一的不同就是NSURLConnection對象的創建方式、在initWithRequest: degate指定其代理方法時就開始下載,其代理方法能獲取整個下載過程,常用的代理方法有:
1、接收完HTTP協議頭,開始真正接手數據時候調用,一般在這個方法里初始化一些存儲數據的對象如NSMutableData;
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
2、每接收一段數據就會調用此函數,一般在這把data加到NSMutableData對象上
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData*)data
3、接收數據失敗時調用,并且中斷下載
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
4、最后,如果連接成功并下載,會調用,一般在這釋放一些alloc創建的內存
- (void)connectionDidFinishLoading:(NSURLConnection *)connection;