2015-04-16 26 views

回答

3

網絡請求最好是異步完成的。這有幾個原因,如不可預知的響應時間和可能的網絡故障。因此,當您設計依賴網絡請求的應用程序時,最好在設計時考慮到這一點。例如,如果您需要填充表格,而不是直接在呼叫中進行填充,則會在數據返回到回調例程中(或者當您的應用程序發現請求已完成時)填充該表格。

異步隱含多個任務。在您的應用程序設計中正確使用是很困難的。 NSOperationQueues是一種很好的方式來屏蔽這些複雜的應用程序。特別是,它提供了一種非常自然的方式來確保只有在數據準備就緒時才調用任務 - 這是因爲NSOperationQueue會將隊列上的任務序列化,而無需管理自己的信號量或其他同步原語。

+0

回調應該有自己的隊列或與請求共享相同的隊列? – xunshuairu

+0

如果您希望調用按順序運行,那麼它們應該共享相同的隊列。 Queus有時被稱爲「FIFO」 - 先入先出。因此,如果首先將任務A,然後是任務B添加到同一隊列中,則任務B將在任務A完成之前不會啓動 –

0

不僅對於異步調用非常重要,而且你也不想保持狀態,對嗎?也許你想要有一系列的調用 - 而不是等待響應,然後手動觸發下一個操作,那麼你可以填充隊列並讓經理根據響應調度它。

其他用法可能是上傳多個文件 - 你不想一次上傳超過某個數字的權利?如果你失去了互聯網連接並且你發現自己陷入了一半,那會怎麼樣?這肯定會讓你的用戶感到不安。而是重新填寫操作隊列,一旦上傳一個文件,下一個文件將自動發送。

最後 - 如果您使用隊列,萬一發生故障,您可以擁有一個隊列觀察器,可以重新調度失敗的查詢或刪除隨後的後續調用。

總的來說,它使您的網絡組件更健壯,當然也可以維護。

相關問題