2011-03-21 33 views
1

我試圖用異步代替一個同步網絡調用。問題是我們需要相對快速地超時,而這對於同步網絡連接幾乎是不可能的。在單獨的線程上使用異步URL請求?

一個問題是代碼沒有被構造爲支持異步網絡調用,所以爲了做到這一點,我想通過創建一個單獨的線程來進行異步調用,並在線程調用中「模擬」同步調用,檢查呼叫是否結束,或者等待超時,以先發生者爲準。如果發生超時,請取消網絡請求。

如果我在一個新的線程中創建一個連接,並且該線程存在,我的連接會結束嗎?

我是IOS開發和objective-c的新手,但很少重寫我們的操作隊列如何處理網絡請求,我很想聽聽有關我的方法的其他替代方法。

回答

6

出於興趣,你有沒有想過看看ASIHTTPRequest庫,一個很好的開源CFNetwork包裝?它具有一些非常有用的異步網絡功能,包括能夠指定超時並通過塊在完成和/或失敗時執行。

聽起來好像它可以爲您節省很多痛苦,特別是如果您是Objective-C和iOS的新手 - 無需重新發明輪子,並且它可以顯着簡化網絡操作。我們(我工作的公司)現在在我們的絕大多數構建中使用它。它非常穩定並且非常實用 - 我還沒有從我們與圖書館相關的分析報告中得到一個錯誤報告,並且涉及數百萬次會話。我不能推薦它足以簡化這些網絡任務。

既然您問過您的方法的潛在替代方案,我想我會建議它,但我明白,如果您不願意引入另一個庫或無法在您的項目中使用OSS代碼。

編輯:如果我提供了一個鏈接,將有所幫助! http://allseeing-i.com/ASIHTTPRequest/

+0

對於ASIHTTPRequest +1;它爲我節省了很多時間。 – zpasternack 2011-03-21 23:49:01