Cómo capturar el valor actual de una variable para un bloque

¿Hay alguna manera de guardar el valor actual de una variable para su uso posterior en un bloque?

Por ejemplo, para este código de Playground:

import UIKit
import XCPlayground

XCPlaygroundPage.currentPage.needsIndefiniteExecution = true

class testClass {
    var i = 0
    func test() {
        let dispatchTime: dispatch_time_t = dispatch_time(DISPATCH_TIME_NOW, Int64(Double(NSEC_PER_SEC)) * 5)
        dispatch_after(dispatchTime, dispatch_get_main_queue(), {
            self.test(self.i)
        })
        i = 3
    }

    func test(i: Int)
    {
        print("i: \(i)")
    }
}

let a = testClass()
a.test()

¿Hay alguna manera de guardar el valor actual dei paradispatch_after de una manera que obtengo la salidai: 0 en lugar dei: 3?

Respuestas a la pregunta(2)

Su respuesta a la pregunta