2014-03-27 39 views
0

我正在使用AsyncSocket進行TCP連接。
我有一個TCP套接字,但我有兩個UIViewControllers使用此套接字。
據我所知,當我初始化AsyncSocket時,只有一個委託。
這兩個UIViewControllers都需要處理來自AsyncSocket的回調。
有什麼好主意來實現這一目標?
任何想法表示讚賞!iOS的AsyncSocket通知兩個UIViewController

回答

0

您可以使用nsnotificationcenter來通知兩個視圖控制器關於來自AsyncSocket的回調。 您可以在某些應用程序控制器(可以爲您的應用程序創建它)/ appdelegate中使用AsyncSocket代碼。當它觸發回調時,你可以發送通知AsyncSocketNoftication(你必須創建像這樣的命名通知),這是由各自的視聽控制器捕獲的AsyncSocketNoftication。 即使你想通知許多視圖控制器,這也很有用。

希望它有幫助!

+0

感謝您的快速響應。看來使用nsnotificationcenter是一個好方法。你認爲在AppDelegate中使用AsyncSocket是個好主意嗎?或者在分離的管理器UIViewController中使用AsyncSocket? – srjohnhuang

+0

這取決於您的應用程序如何圍繞您的AsyncSocket部件移動。根據您的需要,您可以決定放置此代碼的最佳位置。 AppDelegate只是我的建議。只是考慮放置這段代碼。 (Think-> design-> Implement):) – jnix

+0

謝謝!我會考慮的。 :) – srjohnhuang

0

當你需要有多個代表的東西,你可以用任何論斷:

  1. 有一定manager類充當委託的插座。這個管理器類將有一個委託數組(每個元素的類型爲id<someCustomDelegate>)。此外,您還有一個someCustomDelegate協議,您的每個ViewController都可以實施。當你的AsyncSocket的委託方法被調用時,你迭代自定義委託數組來通知每一個訂閱的ViewControllers。
  2. 您可以使用與數字1類似的模式,但不是代理數組,而是發佈自定義通知,並使每個ViewController偵聽該特定通知。這種方法會更容易,也很可靠。
+0

感謝您的分享!我寧願你的第二個建議。我認爲你的第一種方法對我來說有點複雜,但我想知道更多。這個實現有沒有類似的例子? – srjohnhuang

+0

我不知道一個特定的例子,但我敢肯定,如果你谷歌的東西像'委託數組'你可能會發現一些東西。此外,這並不難,只要你以前使用過自定義委託,唯一的新事物就是代替擁有數組的委託屬性。 – Merlevede

+0

太棒了!謝謝你的提示!我會嘗試谷歌「代表陣列」。 – srjohnhuang