2011-04-01 71 views
2

我試圖讓我的類(「調用者」)發送消息到控制器對象以異步返回從NSURLConnection收集的數據。即,我希望調用者能夠執行諸如NSData * myData = [urlconnectioncontroller getData];之類的操作,而無需調用者實現NSURLConnection委託方法本身。有些事告訴我這是不可能的。我想我可以實現類似[urlconnectioncontroller requestDataWithCallback:(SEL)callback]之類的東西,然後讓調用者實現callback方法,該方法將在NSURLConnection調用connectionDidFinishLoading委託方法時接收數據。不過,我不確定這是做這種事情的最佳方式。任何指導將不勝感激。從異步url連接返回數據到調用者

回答

1

塊/回調是要走的路。

+0

是的,我很害怕這個。我想這不是很糟糕:) – Sean 2011-04-01 18:33:07

+1

塊使這非常簡單。 – ssteinberg 2011-04-01 18:34:15

+0

我想是時候咬下子彈學習塊如何工作。 – Sean 2011-04-01 18:44:19

0

檢查NSURLConnection,它是委託方法。這一切都沒有 - 三種方法:

  1. 爲開頭的連接(用於分配像NSMutableData比如VAR數據池)
  2. 收集數據(多次呼籲每個接收的數據塊)
  3. 爲完成連接(用實際接收到的數據做一些事情)

還有一對夫婦的保險,以防萬一連接在開始或超時失敗。

+0

我知道委託方法是如何工作的。我讓它們在控制器對象中實現,它完成所有基本的nsurlconnection工作。我想要的是爲此控制器對象提供一個接口,以便其他對象可以簡單方便地請求信息並將其取回。我不想在我的代碼中的很多不同的地方實現委託方法。 – Sean 2011-04-01 18:32:40

+0

這個角色不應該在控制器中。你應該爲這個模型實現單獨的類(MVC中的M)。 – Eimantas 2011-04-01 18:34:38

+0

夠公平的,這可能應該歸類爲模型。但無論如何,你看到我想要在這裏做什麼,是嗎? – Sean 2011-04-01 18:39:13