2013-10-29 120 views
0

我想知道兩個NSURLConnection協議或方法(或者其實際稱爲什麼)的區別。NSURLConnection connectionWithRequest:delegate和sendAsynchronousRequest:queue:completionHandler之間的主要區別是什麼?

我很新來Objective-C編程,我試圖創建一個iOS應用程序,從網站加載數據。我注意到在我看過/讀過的教程中,當他們使用connectionWithRequest時,他們有其他方法在我看來是connectionWithRequest正常工作所需的方法。一個教程是this。這些方法是:

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response; 
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data; 

只是爲了兩個。關於這一點,我還有一個問題:當NSURLConnection connectionWithRequest:delegate被調用或使用時,這些方法會自動調用嗎?

我提到的兩個NSURLConnection協議究竟有什麼區別?哪個更好用?

回答

1

的主要區別是在不同類型的回調:

  • 方法-connectionWithRequest:delegate:使用代表團,你必須實現didReceiveResponsedidReceiveData等,使有益。這是更復雜,但允許您處理安全身份驗證,進度跟蹤和類似的事情。

  • 方法+sendAsynchronousRequest:queue:completionHandler:使用塊完成,這是比委託更容易。它處理接收響應和附加身體數據,並簡單地給你結果。

腳註:的iOS 7引入全新的NSURLSessions URL裝載機構可以用來代替NSURLConnection

相關問題