首页  >  问答  >  正文

socket - ios 代理模式如何转换成顺序执行的流程?

迷茫迷茫2716 天前486

全部回复(3)我来回复

  • 天蓬老师

    天蓬老师2017-04-18 09:26:57

    你这个问题还真是很抽象呢
    1、接收或发送数据是一个独立的功能,假设为sendRead,把它和业务拆开。这样接收数据的时候就只管接收数据,等到数据到你要的标准了,从sendRead模块回调出来。
    readFromSocket(buffer)
    这个方法就可以改造成带一个闭包(block)回调的样式:

    func readFromSocket(data:NSData,completeHander:(receivedData:NSData?)-> Void){
        //接收数据的事
    
        //在某个时机调用回调,应该不是当前这个方法里,接收数据应该都是异步的吧
        completeHander(receivedData: xxx)
    }

    你的业务执行到某个阶段,你需要某个数据了,调用这个,然后在回调里处理。这时回调里只需要处理这个阶段的逻辑。虽然这样还是无法做到顺序调用,因为接受数据不可能一下完成,肯定是要等数据接受方主动通知的。

    2、我看你handleData里面之前要做多状态判断,是这个业务是多线程同时运作的吗?如果不是感觉会比较简单些,因为APP当前就一个状态,只需要做好单个状态的数据先集中然后丢给业务代码处理就好了。否则,要把业务逻辑分隔开来,读取操作也要分隔开吧。

    回复
    0
  • ringa_lee

    ringa_lee2017-04-18 09:26:57

    怎么这么多拼写错误

    回复
    0
  • 高洛峰

    高洛峰2017-04-18 09:26:57

    ReactiveCocoas 或 RxSwift

    回复
    0
  • 取消回复