小编Hov*_*ech的帖子

关闭捕获上下文Swift

当我尝试更改闭包中的变量时,我收到此错误:

A C function pointer cannot be formed from a closure that captures context
Run Code Online (Sandbox Code Playgroud)

是否有解决方法或是否仍然可以更改闭包内的变量?

我的代码:

let callback: @convention(c) (readStream: CFWriteStream!, event: CFStreamEventType, data: UnsafeMutablePointer<Void>) -> Void = {
    (readStream, event, data) -> Void in
    switch event {
    case CFStreamEventType.ErrorOccurred:
        self.isError = true
        break
    case CFStreamEventType.EndEncountered:
        self.isRunLoop = false
        break
    case CFStreamEventType.HasBytesAvailable:
        break
    case CFStreamEventType.OpenCompleted:
        break
    case CFStreamEventType.CanAcceptBytes:
        self.bytesWritten = CFWriteStreamWrite(readStream, self.buffer, self.leftOverSize)
        break
    default:
        break
    }
}

let registeredEvents: CFOptionFlags =
    CFStreamEventType.CanAcceptBytes.rawValue |
    CFStreamEventType.HasBytesAvailable.rawValue |
    CFStreamEventType.ErrorOccurred.rawValue |
    CFStreamEventType.EndEncountered.rawValue | …
Run Code Online (Sandbox Code Playgroud)

closures callback swift

4
推荐指数
1
解决办法
1664
查看次数

了解线程Swift

我有点理解线程,如果我错了就纠正我.

  • 在代码完成之前,是否将单个线程分配给一段代码?
  • 线程是否优先考虑首先运行的代码?
  • 主队列和线程有什么区别?

我最重要的问题:

线程可以同时运行吗?如果是这样,我如何指定我的代码的哪些部分应该在选定的线程上运行?

multithreading swift

0
推荐指数
1
解决办法
1385
查看次数

标签 统计

swift ×2

callback ×1

closures ×1

multithreading ×1