簡體   English   中英

Objective-C NSURLConnection

[英]Objective-C NSURLConnection

我可以將所有與連接相關的功能放到自己的(單個)類中,或者放到應用程序委托中嗎?

我現在有很多代碼重復...

例如。 此方法至少包含5個文件:

- (void)connection:(NSURLConnection*)connection didFailWithError:(NSError*)error;

我是否只需導入其中包含這些方法的類? 我是否需要擴展或使用它們?

我不建議為NSURLConnection處理程序使用單例方法,主要是因為每個URL連接都是不同的,並且可能需要以不同的方式進行處理。

如果您有簡單的請求,似乎您有很多代碼重復,但是當您開始提出更復雜的請求,並解析從請求中獲得的不同響應時,您很快就會開始發現這種通用方法不會使您不必編寫更多特定的實現。

正確的答案實際上取決於網絡交互的復雜程度。 如果它很復雜,並且您嘗試在一個類中完成所有操作,那么該類中的每個方法都會遇到無盡的情況。 如果它很簡單,可以上一堂課,那么我認為您不必將其設置為單身。 由於NSURLConnection委托函數的工作方式,您甚至可能不需要將連接對象作為ivar。

一種策略是定義一個接口,您將使用該接口在稱為DataSource或類似名稱的父類中獲取信息。 您發送或使用數據的所有類都編寫為使用該接口。 在開發期間,您可以使用一個稱為FileSource的子類,並獲取本地擁有的虛擬數據。 稍后,您切換到NetSource子類,該子類實際上可以使用網絡進行提取。 您可以使用更改文件的簡單操作來進行切換:http:scheme的URL方案-DataSource類可以具有一個類方法,該方法可以解釋URL並告訴您要實例化哪種類型的類,因此您可以在僅使用.plist設置。

我有一堂課,負責下載請求,並在處理數據的最后自動發布。 每次啟動NSURLConnection時,都使用URL進行初始化,這不是一個單例,而是一個對象。 此類有一個負責處理接收到的數據的委托。

希望這可以幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM