Swift 3 - 隔离功能

时间:2017-09-02 17:50:29

标签: swift3

我需要一个只能调用一次的函数,你必须等到下一个函数可以被执行

private func receive(){
    var inputBuffer = Array<UInt8>(repeating: 0, count: BUFFER_MAX);
    let bytesRead = self.inputStream.read(&inputBuffer, maxLength: BUFFER_MAX);

    if(bytesRead > 0){
        let string = convertToString(byteArray: inputBuffer, length: bytesRead);
        // Call if previous is finished
        CommandHandler.convert(string);

    }
}

我测试了类似的东西:

var dispQueue = DispatchQueue(label: "commandConvert")
...
private func convert(){
    dispQueue.sync {
         ...

    }
}

但这不起作用

1 个答案:

答案 0 :(得分:0)

我前几天才遇到这个问题。

您可以使用回调或调度组来解决此问题。以下是Dispatch Group解决方案:

array:5 [
      0 => array:4 [
        "message" => "Message number 1 for first conversation"
        "is_seen" => 0
        "user_id" => 2
        "sent_time" => "2017-08-30 23:28:50"
      ]
      1 => array:4 [
        "message" => "Message number 2 for first conversation"
        "is_seen" => 1
        "user_id" => 1
        "sent_time" => "2017-08-29 23:36:27"
      ]
      2 => array:4 [
        "message" => "Message number 3 for first conversation"
        "is_seen" => 1
        "user_id" => 1
        "sent_time" => "2017-08-29 23:36:27"
      ]
      3 => array:4 [
        "message" => "Message number 4 for first conversation by second user"
        "is_seen" => 1
        "user_id" => 2
        "sent_time" => "2017-08-29 23:36:27"
      ]
      4 => array:4 [
        "message" => "Message number 5 for first conversation by second user"
        "is_seen" => 1
        "user_id" => 2
        "sent_time" => "2017-08-29 23:36:27"
      ]
    ]