解决方案 »

  1.   

    全局只建立一条socket连接,然后做一个消息管理中心,做监听列表,让controller只对自己感兴趣的内容监听就好。
    socket可以在app进入前台时打开:applicationDidBecomeActive,也可以在需要的时候在去链接,因为你applicationDidBecomeActive先链接上去了的话,如果还要做登陆,这时候需要一些鉴权,而你此时还没有。
    关闭的话可以不用做主动关闭,你到后台的话,socket也不一定会断开,看你自己的场景了(applicationDidEnterBackground会在切换到后台的时候调用)。
    CFStreamCreatePairWithSocketToHost 没用过,之前好像用的是这货asynsocket,记不太清了。。
      

  2.   


    是否将asynsocket 声明在AppDelete中 当全局变量?  能否讲解下消息管理中心的 思路。 监听是使用 addObserver? 在UIViewController中如何取得asynsocket或者消息管理中心  监听
      

  3.   


    是否将asynsocket 声明在AppDelete中 当全局变量?  能否讲解下消息管理中心的 思路。 监听是使用 addObserver? 在UIViewController中如何取得asynsocket或者消息管理中心  监听
    asynsocket不用放在AppDelegate里,你把它当作是一个普通的请求,就像是对http 请求的一种网络层的封装。
    消息管理中心可以放在AppDelegate里,其实只要是单例的、能被VC方便获取到实例就行,在消息管理中心里使用asynsocket,以此来实现全局建立一条socket 连接。监听不用addObserver,tcp的消息分发我们一般采用本地通知的形式,VC只需要在显示的时候监听某一种类型的通知即可。