クロージャー内から構造体の 1 つで変更メソッドを呼び出そうとしています。動いていない。
から呼び出されるようにクロージャーをスケジュールしていますdispatch_after
。エラー メッセージが表示されますPartial application of 'mutating' method is not allowed
。
これはSwift 1.2で機能していました。Swift 2 にはありません。更新後にエラーが表示されました。Playground でエラーを表示するスタンドアロンの例を次に示します。
struct MutationTest {
var timestamp: Int = 0
mutating func changeTimestamp () {
timestamp += 1 //NO ERROR HERE
}
mutating func callChangeTimeStamp() {
changeTimestamp() //NO ERROR HERE
}
mutating func scheduleCallChangeTimestamp() {
let highQConstant = DISPATCH_QUEUE_PRIORITY_HIGH
let highQ = dispatch_get_global_queue(highQConstant, 0)
let time = dispatch_time(DISPATCH_TIME_NOW, Int64(3 * NSEC_PER_SEC))
dispatch_after(time, highQ, callChangeTimeStamp) //ERROR HERE
}
}
ちなみに、changeTimestamp
メソッドを次のように変更すると、まったく同じエラーが発生します。
mutating func changeTimestamp () {
self = MutationTest(timestamp: timestamp + 1)
}