鏈接異步NSURLConnections最合適的方式是什麼?例如,我需要使用Web服務註冊用戶。工作流程如下: 獲取註冊令牌=>使用令牌註冊=>獲取登錄令牌=>使用令牌登錄。如何鏈接異步NSURLConnections?
我知道如何創建一個異步NSURLConnection,但我不確定如何在繼續之前確保先前的連接已完成。我知道我可以使用NSURLConnection sendSynchronousRequest
來實現這個目標,但是我不喜歡我的主線程在這些鏈接請求發生時被阻塞。
鏈接異步NSURLConnections最合適的方式是什麼?例如,我需要使用Web服務註冊用戶。工作流程如下: 獲取註冊令牌=>使用令牌註冊=>獲取登錄令牌=>使用令牌登錄。如何鏈接異步NSURLConnections?
我知道如何創建一個異步NSURLConnection,但我不確定如何在繼續之前確保先前的連接已完成。我知道我可以使用NSURLConnection sendSynchronousRequest
來實現這個目標,但是我不喜歡我的主線程在這些鏈接請求發生時被阻塞。
當我們爲iPhone構建我們的第一版SignMeOut時,我們做了EXACTLYA。我們創建了一個NSUrlconnection的子類,並在connectionDidFinish中爲它提供了一個標識標記,您可以使用一個簡單的開關/一個枚舉枚舉。偉大的工程 - 你可以看到在我們的博客
http://www.isignmeout.com/multiple-nsurlconnections-viewcontroller/
UPDATE
我已經修改了NSURLConnection的子類到一個更簡單的範疇整個流程和示例和代碼。大多數使用的是相同的,但使用相同的類
您可以查看connectionDidFinishLoading
以啓動另一個異步連接。對於哪些連接結束的條件,如果其他連接也預計完成(可能不需要您的情況),您可以保留對連接的引用。讓你的班級遵循NSURLConnectionDelegate
並在connectionDidFinishLoading
委託方法中觸發適當的連接。您也可以使用connectionDidReceiveData:
方法檢查從服務收到的憑證等。也請通過documentation。
十分感謝吸塵器!你會如何建議分拆這些方法?例如,我有兩個主要場景。 1)用戶正在註冊,這將需要上述四個條件,2)用戶正在登錄,我們將只需要最後兩個連接。 'BOOL isRegistering' iVar或其他適當的東西? – squarefrog 2012-04-22 14:21:27
當然,如果適合你,使用bools也可以... – tipycalFlow 2012-04-22 14:25:39
你有不同的選擇:
好極了。很高興知道所有的選擇! – squarefrog 2012-04-22 14:36:45
棒極了!非常感謝您花時間發佈此信息。 – squarefrog 2012-04-22 14:28:08
很高興它對別人有用:)讓我知道它是如何爲你工作的 – shein 2012-04-22 14:48:31
就像更新,嘗試這個更早,效果很好!完美解決方案 – squarefrog 2012-04-22 22:47:16