> On 30 Nov 2016, at 10:38, Седых Александр via swift-users > <swift-users@swift.org> wrote: > > Assume we have this code: > > Immediately two Timer's closures captured two copy of initial values of > instance Test, with internal num values is 0. > > //: Playground - noun: a place where people can play > > import UIKit > > var str = "Hello, playground" > > struct Test { > var num = 0 > mutatingfunc newNum(new: Int) { > num = new > } > } > > var test = Test() > > Timer.scheduledTimer(withTimeInterval: 1.0, repeats: false) { (timer) in > print("tick") > test.newNum(new: 8) > } > > Timer.scheduledTimer(withTimeInterval: 2.0, repeats: false) { (timer) in > print("tack, test.num = \(test.num)") > } > > > CFRunLoopRun() > > > > We have next log: > tick > tack, test.num = 8 > > Why Timer's two closure return to us value 8 and not 0?
Because the first timer changed the value to 8 when it expired one second before. > > > > -- > Седых Александр > _______________________________________________ > swift-users mailing list > swift-users@swift.org > https://lists.swift.org/mailman/listinfo/swift-users _______________________________________________ swift-users mailing list swift-users@swift.org https://lists.swift.org/mailman/listinfo/swift-users