你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> ios-同步下載與異步下載

ios-同步下載與異步下載

編輯:IOS開發綜合

一、同步下載(交互不好,容易出現卡死現象,一般下載數據較小或有特定需求才使用)。 發送同步請求後,程序將停止用戶交互,直到服務器返回數據完成後,才進行下一步的操作。

//第一步:創建URL

NSURL *pURL = [NSURL URLWithString:URL];

//第二步:創建一個請求

NSURLRequest *pRequest = [NSURLRequest requestWithURL:pURL cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60];

//第三步:建立連接

NSError *pError = nil;

NSURLResponse *pRespond = nil;

//向服務器發起請求(發起之後,線程就會一直等待服務器響應,直到超出最大響應時間)

NSData *pData = [NSURLConnection sendSynchronousRequest:pRequest returningResponse:&pRespond error:&pError];

//輸出獲取結果

NSLog(@"pData = %@",pData);

//輸出錯誤信息

NSLog(@"pError = %@",[pError localizedDescription]);

二、異步下載
異步下載支持應用程序在後台下載數據,在等待下載完成的過程中不會阻塞代碼的運行,異步連接步驟如下:

/*異步請求*/

//1.獲取網絡資源路徑(URL)

NSURL *pURL1 = [NSURL URLWithString:URL];

//2.根據URL創建請求

NSURLRequest *pRequset1 = [NSURLRequest requestWithURL:pURL1 cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60];

//3.(與同步請求的區別點)發起請求,通過委托模式回調完成數據獲取

[NSURLConnection connectionWithRequest:pRequset1 delegate:self];

注意:在異步請求中使用了NSURLConnectionDataDelegate協議,委托對象為自己。其中有四個經常用到的方法,我們將獲得的數據放在self.pData中,其類型為 NSMutableData 。

//1.服務器響應回調的方法

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response

{

NSLog(@"服務器響應");

self.pData = [NSMutableData dataWithCapacity:5000];

}

//2.服務返回數據,客戶端開始接受(data為返回的數據)

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data

{

NSLog(@"服務器返回數據");

//將返回數據放入緩存區

[self.pData appendData:data];

}

//3.數據接受完畢回調的方法

- (void)connectionDidFinishLoading:(NSURLConnection *)connection

{

NSLog(@"數據接受完畢");

NSLog(@"pData = %@",self.pData);

}

//4.接受數據失敗時候調用的方法

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error

{

NSLog(@"數據接受失敗,失敗原因:%@",[error localizedDescription]);

}



  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved