SwiftのDEVELOPMENT-SNAPSHOT-2016-06-06-a
バージョンを使用しています。簡単な例であるここでは、SwiftのDispatch Closure内での構造体インスタンス変数の変更
Closure cannot implicitly capture a mutating self parameter
良く説明するために:
public struct ExampleStruct {
let connectQueue = dispatch_queue_create("connectQueue", nil)
var test = 10
mutating func example() {
if let connectQueue = self.connectQueue {
dispatch_sync(connectQueue) {
self.test = 20 // error happens here
}
}
}
}
私は様々な場所で
@noescape
を使用してみましたが、私はまだ、次のエラーを持って、この問題を回避するように見えることはできません
これらのSwiftバイナリで何かが変更されている必要があります。これにより、以前は動作していたコードが壊れてしまいました。私が避けたい回避策は、私の構造体をクラスにすることで、問題を解決するのに役立ちます。別の方法があれば教えてください。
:
新しいディスパッチAPIはそうあなたが明示的にキャプチャを必要としない
sync
方法@noreturn
を作りますか? –@MartinR MacでXcode 7.3.1を使用しています – tfrank377