首頁  >  問答  >  主體

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

迷茫迷茫2765 天前517

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