Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/103.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
要通知两个UIViewController的iOS AsyncSocket_Ios_Objective C_Asyncsocket_Cocoaasyncsocket - Fatal编程技术网

要通知两个UIViewController的iOS AsyncSocket

要通知两个UIViewController的iOS AsyncSocket,ios,objective-c,asyncsocket,cocoaasyncsocket,Ios,Objective C,Asyncsocket,Cocoaasyncsocket,我正在使用AsyncSocket进行TCP连接。 我有一个TCP套接字,但我有两个UIViewController使用此套接字。 据我所知,初始化AsyncSocket时只有一个委托。 这两个UIViewController都需要处理来自AsyncSocket的回调。 有什么好主意可以做到这一点吗? 任何想法都很感激 当您需要为某件事安排多个代表时,您可以使用以下任一选项: 让一些管理器类充当套接字的委托。这个管理器类将有一个委托数组(一个简单的NSArray,其中每个元素的类型都是id)。此外

我正在使用AsyncSocket进行TCP连接。
我有一个TCP套接字,但我有两个UIViewController使用此套接字。
据我所知,初始化AsyncSocket时只有一个委托。
这两个UIViewController都需要处理来自AsyncSocket的回调。
有什么好主意可以做到这一点吗?

任何想法都很感激

当您需要为某件事安排多个代表时,您可以使用以下任一选项:

  • 让一些
    管理器
    类充当套接字的委托。这个管理器类将有一个委托数组(一个简单的NSArray,其中每个元素的类型都是
    id
    )。此外,每个ViewController都实现了一个
    someCustomDelegate
    协议。调用AsyncSocket的委托方法时,您将遍历自定义委托数组,以通知每个订阅的ViewController
  • 您可以使用与数字1类似的模式,但不需要代理数组,只需发布自定义通知,并让每个ViewController侦听该特定通知。这种方法更容易,也非常可靠 您可以使用通知两个视图控制器有关从AsyncSocket回调的信息。 您可以在某些appcontroller(您可以为您的应用程序创建它)/appdelegate中使用AsyncSocket代码。当它触发回调时,您可以发送通知AsyncSocketNoftication(您必须创建这样的命名通知),该通知由侦听AsyncSocketNoftication的各个viewcontroller捕获。 即使要通知许多ViewController,这也很有用


    希望有帮助

    谢谢你的快速回复。似乎使用nsnotificationcenter是一个很好的方法。您认为在AppDelegate中使用AsyncSocket是个好主意吗?或者在单独的管理器UIViewController中使用AsyncSocket?这取决于应用程序在AsyncSocket部分的移动方式。根据需要,您可以决定放置此代码的最佳位置。AppDelegate只是我的建议。请考虑一下放置此代码。(思考->设计->实施):)谢谢!我会考虑的谢谢分享!我更喜欢你的第二个建议。我想你的第一种方法对我来说有点复杂,但我想知道更多。这个实现有没有类似的例子?我不知道有什么特别的例子,但我相信如果你用谷歌搜索像
    代理数组这样的东西,你可能会发现一些东西。而且,这也没那么难,如果你以前使用过自定义委托,唯一的新功能就是不用委托属性,而是使用数组。太棒了!谢谢你的提示!我将尝试用谷歌搜索“代理数组”。