0

クロージャー内から構造体の 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)
    }
4

1 に答える 1

1

これはうまくいくようです:

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