天蓬老师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目前就一個狀態,只要做好單一狀態的資料先集中然後丟給業務程式碼處理就好了。否則,要把業務邏輯分隔開來,讀取操作也要分隔開吧。