0

我正在尝试从闭包中调用我的一个结构上的变异方法。它不工作。

我正在安排从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)
    }
4

1 回答 1

1

这似乎工作正常:

dispatch_after(time, highQ, { self.callChangeTimeStamp() })
于 2015-09-23T04:18:41.287 回答