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

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

全部回覆(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

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板