我需要在應用程序中進行多個異步服務調用:來自我的應用程序委託的didFinishLaunchingWithOptions:方法,以便從應用程序中的各種控制器中檢索一些服務中的某些數據。我已經控制了服務,並且我設計的API儘可能地爲RESTful,所以我需要在應用程序初始化期間進行多次調用。在iPhone應用程序初始化時進行多個服務調用
我想要做的是顯示帶有進度指示器的加載視圖 - 類似於Default.png的默認啓動畫面 - 並在服務調用完成後移除該視圖,並獲得我需要的初始值。如果只有一個服務調用,這很容易實現,因爲我可以通過隱藏加載視圖並顯示根控制器來簡單地將該邏輯掛接到NSURLConnection的connectionDidFinishLoading:delegate方法。
但是,對於多個服務調用,它變得棘手。我可以將所有內容「鏈接」在一起,發出一個請求,等待它完成/失敗,然後發出第二個請求,等等直到我接到最後一個請求。在最後的請求中,我隱藏加載視圖並顯示普通視圖。但是,這可能會在多個服務調用中變得笨拙,代碼變得難以理解和遵循。
有關最佳方法的任何建議嗎?
我在想一個解決方案是有一個singleton類負責進行服務調用和應用程序初始化。單例對象將在啓動時並行觸發所有必要的請求,並且每個失敗/完成回調將檢查每個請求是否已完成。如果所有請求都已完成,那麼它可以調用應用程序委託中的某些方法並告訴它隱藏加載視圖,顯示根控制器等。
想法?
通過這種方式,您可以一次啓動所有服務請求,而不是通過序列化來減慢速度。 – hotpaw2 2010-09-02 23:49:28
謝謝。這或多或少是我採用的方法,因爲我只有幾個請求,只需要一個輕量級的解決方案。完成的每個請求都會通知主對象請求已完成,並且主對象將在加載主應用程序視圖之前檢查是否所有必需的請求都已完成。 – pmc255 2010-09-08 06:36:18