Swift 2: метод мутации структуры не работает изнутри замыкания

Я пытаюсь вызвать метод мутации на одной из моих структур из замыкания. Это не работает.

Я планирую закрытие из dispatch_after, Я получаю сообщение об ошибке Partial application of 'mutating' method is not allowed,

Это работало в Swift 1.2. Не в Swift 2. Ошибка появилась после обновления. Вот автономный пример, который покажет ошибку на игровой площадке.

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)
    }

1 ответ

Решение

Кажется, это работает нормально:

dispatch_after(time, highQ, { self.callChangeTimeStamp() })
Другие вопросы по тегам