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)

iOS_SN_Socket - AsyncSocket

无法编写:SSL / TLS with AsyncSocket for iOS

ios asyncsocket 无法调用 readdata 方法

iOS开发之即时通讯之Socket(AsyncSocket)