iOS AsyncSocket 通知两个 UIViewController
Posted
技术标签:
【中文标题】iOS AsyncSocket 通知两个 UIViewController【英文标题】:iOS AsyncSocket to notify to two UIViewController 【发布时间】:2014-03-27 03:30:35 【问题描述】:我正在使用 AsyncSocket 进行 TCP 连接。 我有一个 TCP 套接字,但我有两个 UIViewControllers 使用这个套接字。 据我所知,在我初始化 AsyncSocket 时只有一个委托。 这两个 UIViewController 都需要处理来自 AsyncSocket 的回调。 有什么好主意可以实现这一目标吗? 任何想法表示赞赏!
【问题讨论】:
【参考方案1】:您可以使用nsnotificationcenter,通知两个视图控制器有关来自 AsyncSocket 的回调。 您可以在一些应用控制器(您可以为您的应用创建它)/appdelegate 中使用 AsyncSocket 代码。当它触发回调时,您可以发送通知 AsyncSocketNotication(您必须像这样创建命名通知),该通知由正在侦听 AsyncSocketNotication 的各个视图控制器捕获。 即使您想通知许多视图控制器,这也很有用。
希望对你有帮助!
【讨论】:
感谢您的快速回复。似乎使用 nsnotificationcenter 是一个好方法。你认为在 AppDelegate 中使用 AsyncSocket 是个好主意吗?还是在单独的管理器 UIViewController 中使用 AsyncSocket? 这取决于您的应用程序如何围绕您的 AsyncSocket 部分移动。根据您的需要,您可以决定放置此代码的最佳位置。 AppDelegate 只是我的建议。请考虑放置此代码。 (思考->设计->实施):) 谢谢!我会考虑的。 :)【参考方案2】:当您需要为某事有多个委托时,您可以使用任何这些:
-
有一些
manager
类充当套接字的委托。这个管理器类将有一个委托数组(一个简单的 NSArray,其中每个元素的类型都是 id<someCustomDelegate>
)。此外,您还有一个 someCustomDelegate
协议,每个 Viewcontroller 都实现了该协议。当调用 AsyncSocket 的委托方法时,您将遍历自定义委托数组以通知每个订阅的 ViewController。
您可以使用与数字 1 类似的模式,但您只需发布自定义通知,而不是委托数组,并让每个 ViewController 监听该特定通知。这种方法会更容易,也非常可靠。
【讨论】:
感谢您的分享!我更喜欢你的第二个建议。我认为您的第一种方法对我来说有点复杂,但我很想了解更多。这个实现有没有类似的例子? 我不知道具体的例子,但我敢肯定,如果你用谷歌搜索array of delegates
之类的东西,你可能会找到一些东西。此外,这并不难,只要您以前使用过自定义委托,唯一的新功能就是您拥有一个数组,而不是委托属性。
太棒了!谢谢你的提示!我会尝试用谷歌搜索“代表数组”。以上是关于iOS AsyncSocket 通知两个 UIViewController的主要内容,如果未能解决你的问题,请参考以下文章
iOS开发之即时通讯之Socket(AsyncSocket)
iOS开发之即时通讯之Socket(AsyncSocket)
无法编写:SSL / TLS with AsyncSocket for iOS