socket - ios 代理模式如何转换成顺序执行的流程?
迷茫
迷茫 2017-04-18 09:24:57
0
3
534
迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(3)
Peter_Zhu

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

func readFromSocket(data:NSData,completeHander:(receivedData:NSData?)-> Void){
    //接收数据的事

    //在某个时机调用回调,应该不是当前这个方法里,接收数据应该都是异步的吧
    completeHander(receivedData: xxx)
}

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

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

左手右手慢动作

怎么这么多拼写错误

小葫芦

ReactiveCocoas 或 RxSwift

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板