2010-08-03 71 views
0

我可以將所有連接相關函數放入它自己的(singleton?)類或可能的應用程序委託中嗎?Objective-C NSURLConnection

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

eg。這種方法至少有5個文件:

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

我只是導入一個類中有這些方法嗎?我必須擴展或使用它們嗎?

回答

0

我不會推薦一個NSURLConnection處理程序的單例方法,主要是因爲每個url連接是不同的,可能需要以不同的方式處理。

如果您有簡單的請求,看起來好像有很多代碼重複,但是當您開始製作更復雜的請求並解析從請求中獲得的不同響應時,您很快就會開始看到通用的方法不會讓你不必編寫更具體的實現。

0

正確的答案確實取決於您的網絡交互的複雜程度。如果它很複雜,並且您嘗試在一個課程中完成所有練習,那麼您將最終在課堂中的每種方法中都有無盡的案例。如果它足夠簡單,可以在一個班級中完成,我認爲你不需要把它變成一個單身人士。由於NSURLConnection委託函數的工作方式,您可能甚至不需要將連接對象作爲ivar。

一種策略是定義一個接口,您將使用該接口來獲取名爲DataSource或類似的父類中的信息。所有發送或使用數據的類都被編寫爲使用該接口。在開發過程中,您可以使用名爲FileSource的子類,並獲取本地的虛擬數據。之後,您切換到NetSource子類,它實際上會使用網絡進行抓取。您可以使用像更改文件這樣的簡單操作來完成切換:http:scheme的URL方案 - 並且DataSource類可以具有解釋URL的類方法,並告訴您要實例化哪種類,以便您可以在只使用.plist設置。

0

我有一個類,負責下載請求,並在數據處理結束時自動發佈。這不是一個單例,而是一個對象,我每次需要啓動NSURLConnection時都會使用url進行初始化。這個班級有一個負責處理收到的數據的代表。

希望這會有所幫助