业精于勤,荒于嬉;行成于思,毁于随。
你这个问题还真是很抽象呢1、接收或发送数据是一个独立的功能,假设为sendRead,把它和业务拆开。这样接收数据的时候就只管接收数据,等到数据到你要的标准了,从sendRead模块回调出来。readFromSocket(buffer)这个方法就可以改造成带一个闭包(block)回调的样式:
func readFromSocket(data:NSData,completeHander:(receivedData:NSData?)-> Void){ //接收数据的事 //在某个时机调用回调,应该不是当前这个方法里,接收数据应该都是异步的吧 completeHander(receivedData: xxx) }
你的业务执行到某个阶段,你需要某个数据了,调用这个,然后在回调里处理。这时回调里只需要处理这个阶段的逻辑。虽然这样还是无法做到顺序调用,因为接受数据不可能一下完成,肯定是要等数据接受方主动通知的。
2、我看你handleData里面之前要做多状态判断,是这个业务是多线程同时运作的吗?如果不是感觉会比较简单些,因为APP当前就一个状态,只需要做好单个状态的数据先集中然后丢给业务代码处理就好了。否则,要把业务逻辑分隔开来,读取操作也要分隔开吧。
怎么这么多拼写错误
ReactiveCocoas 或 RxSwift
你这个问题还真是很抽象呢
1、接收或发送数据是一个独立的功能,假设为sendRead,把它和业务拆开。这样接收数据的时候就只管接收数据,等到数据到你要的标准了,从sendRead模块回调出来。
readFromSocket(buffer)
这个方法就可以改造成带一个闭包(block)回调的样式:
你的业务执行到某个阶段,你需要某个数据了,调用这个,然后在回调里处理。这时回调里只需要处理这个阶段的逻辑。虽然这样还是无法做到顺序调用,因为接受数据不可能一下完成,肯定是要等数据接受方主动通知的。
2、我看你handleData里面之前要做多状态判断,是这个业务是多线程同时运作的吗?如果不是感觉会比较简单些,因为APP当前就一个状态,只需要做好单个状态的数据先集中然后丢给业务代码处理就好了。否则,要把业务逻辑分隔开来,读取操作也要分隔开吧。
怎么这么多拼写错误
ReactiveCocoas 或 RxSwift