我正在尝试从闭包中调用我的一个结构上的变异方法。它不工作。
我正在安排从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)
}