首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Swift 3-隔离函数

Swift 3-隔离函数
EN

Stack Overflow用户
提问于 2017-09-03 01:50:29
回答 1查看 44关注 0票数 0

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

代码语言:javascript
复制
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);

    }
}

我测试过这样的东西:

代码语言:javascript
复制
var dispQueue = DispatchQueue(label: "commandConvert")
...
private func convert(){
    dispQueue.sync {
         ...

    }
}

但这不管用

EN

回答 1

Stack Overflow用户

发布于 2017-09-03 02:01:00

前几天我就遇到了这个问题。

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

代码语言:javascript
复制
class test {
            let myDispatchGroup = DispatchGroup()

            func receive () {
                myDispatchGroup.enter()
                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);
                      myDispatchGroup.leave()
                }
                 myDispatchGroup.notify(queue: DispatchQueue.main) {
                        // Call if previous is finished
                        CommandHandler.convert(string);
                }
             }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46016591

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档