2011-11-10 51 views
0

我在與HTTP服務器通信的Objective-C中創建服務類。我熟悉NSURLConnection和相關的類來向服務器發出異步請求。到目前爲止,我已經使用self作爲委託,響應調用所需的四個委託方法(didReceiveResponse,didReceiveData等)。NSURLConnection的委託方法/選擇器

我正在構建的服務類必須能夠同時處理多個請求,並對每個請求做出不同的響應。我正在尋找一種方法來實現這一點,沒有無盡的開關或connectionDidFinishLoading方法中的if-elseif。

我的想法是創建一個實現上述四個方法的委託類,並將其提供給NSURLConnection對象進行交談。但是,我想在連接完成加載時通知父類,然後在父類中激發另一個方法。當然,代表不知道這是哪種方法 - 可能是任何事情。

如何繼續?有沒有辦法爲委託類設置選擇器,並在請求完成時觸發該選擇器(這是一種方法)?我該如何做這樣的事情?

(創建委託我的委託,然後調用父類方法可以做的伎倆,但我真的很爲通配符的方法,如選擇。)

任何幫助,不勝感激!

問候,

雷因德

回答

0

我會通過一個塊(^{ ... }),以當連接完成後,它應該調用該委託。

0

你有三個選擇:

  1. 使用block callback
  2. 使用notifications
  3. 使用委託,因爲你已經建議。

這三者都是完全有效的,但具有各種優點/缺點。全部學習,然後決定在每種情況下使用哪一種。 :-)

通常會選擇多個解決方案。例如,許多Apple類實現委託方法併爲同一事件發送通知。