2011-11-13 30 views
0

好的,我正在構建一個應用程序,它將在幾個地方使用ASIHttpRequest從Web服務獲取JSON數據,或將發佈到Web服務。我有它的工作,但真的不喜歡有幾個實例的請求對象灑在不同的視圖控制器(登錄視圖控制器,桌面視圖控制器和詳細信息視圖控制器。我想將我所有的ASIHttpRequest方法移動到一併返回從Web服務返回的值的字典。問題是,代理方法不返回,我需要返回。在ASIHttpRequest和Storyboard中使用Login View Controller

什麼是一些建議我怎麼可以合併所有創建HTTPRequest並在請求完成時返回值的方法

如果需要,我可以發佈代碼,但這實際上更多的是一般性問題而不是特定問題如果有任何教程這應該如何完成後,我將不勝感激。我想我的代碼是高效和漂亮:)

謝謝!

回答

0

你的問題將是異步。我不確定你的意思是整合,但你可以有一個單身(你可以使用你的應用程序委託)來調用請求。所以你會這樣做:

[(MyAppDelegateClass *)[UIApplication sharedApplication].delegate doLoginStuff:(NSDictionary *)params delegate:self]; 

如果你正在做這一切的異步,你不能只是調用這個方法,並讓它返回一些東西。你會被阻止對你的視圖控制器進行某種回調,這就是ASI本質上工作的方式。充其量,您可以最小化代碼來生成請求並設置任何重複屬性。

我不確定你的意思是讓實例漂浮在整個過程中。如果它是你擔心的記憶,那麼重複使用同一個對象就沒有什麼不同了。 ASI通常使用自動發佈的請求,因此它與以「合併」方法創建它相同。如果它只是乾淨的代碼,我會做一個單例方法,也許在你創建和使用前綴文件導入的某種類型的Utilities類中創建一個基於快捷方式的基於c的方法調用。但是,你需要在你的視圖控制器中使用回調方法,因此它不會比它本來的工作更乾淨。我儘管分享你的痛苦。

當任何請求返回時,我幾乎總是有一個解析結果的方法。通常我只使用一種類型的Web服務,因此有一種解析結果的方法(並將其記錄到NSLog以用於調試目的)也使我回到了NSDictionary或NSArray。

相關問題