2010-10-25 212 views
0

我正在向Web服務發出同步請求,並且無法顯示加載...警報。由於我無法在同步請求時訪問UI。iPhone同步請求

你可以請任何人指導我顯示活動指標,我正在做同步請求。

如果在後臺線程中運行同步請求,是否可以顯示加載消息。

問候, Malleswar

回答

1

是的,有可能這樣做。

你不應該像你所描述的那樣用UI阻止應用程序的主線程 - 在你的設計中總是考慮這個。

有幾種方法可以實現這一點。 NSOperation是一個很好的起點。因此您將創建一個NSOperation子類,它將執行請求,然後通知請求已完成的內容,並提供準備好的數據。

1)啓動進度指示器

2)增加操作的

3)停止指示燈一旦(的NSOperation到控制器)的交易已完成。提示:使用操作中的performSelectorOnMainThread:…

+0

感謝您的詳細描述。你能否提供一些代碼或樣本下載來實現這一點。 – user304804 2010-10-25 06:34:53

+0

你可以不需要繼承NSOperation。只需使用'performSelectorInBackground'。這會自動產生一個新的線程。 – Rengers 2010-10-25 07:30:19

+0

是的,還有其他選擇。 'performSelectorInBackground:'在SLOC中通常是輕量級的,但是在性能上非常重要(與NSOperations相比)。我發現NSOperations也是組織和重用目的的一個很好的起點,但情況可能會有所不同。如果您試圖處理潛在的失敗,那麼Web服務請求相當複雜 - 因此它是一個可靠的,結構化的,可重用的實現的好候選,其實際參數和調用可能會被操作包含。這就是爲什麼我建議。 – justin 2010-11-01 22:26:57

0

我會建議運行在後臺線程的請求。我總是使用ASIHTTPRequest庫來進行異步請求。在回調方法中,您可以將代碼切換到加載警報可見性。

+0

感謝您的快速回復。但我已經開始使用NSData * data = [NSURLConnection sendSynchronousRequest:theRequest returningResponse:&response error:&error];(它在不同的類方法中),並直接從UIthread調用此方法。我現在不能改變。您可以請指導我在後臺線程中調用該方法,並在請求運行時顯示活動指示器。 – user304804 2010-10-25 05:35:49