1つの処理が終わってから、ちょっと時間を置いてから次の処理をしたいな〜という場合、Objective-Cだと、
– (void)performSelector:(SEL)aSelector
withObject:(id)anArgument
afterDelay:(NSTimeInterval)delay
が使えていたんですが、Swiftだと存在しないんですよね。
困ったなーといろいろ調べたところ、こちらで実装すれば良いようです。
func dispatch_after(_ when: dispatch_time_t,
_ queue: dispatch_queue_t!,
_ block: dispatch_block_t!)
こんな感じです。
println( "現在" ) let delay = 60.0 * Double(NSEC_PER_SEC) var time = dispatch_time(DISPATCH_TIME_NOW, Int64(delay)) dispatch_after(time, dispatch_get_main_queue(), { println( "1分後の世界" ) })
Swift3だとこっち
print( "現在" ) let dispatchTime: DispatchTime = DispatchTime.now() + Double(Int64(60.0 * Double(NSEC_PER_SEC))) / Double(NSEC_PER_SEC) DispatchQueue.main.asyncAfter(deadline: dispatchTime, execute: { print( "1分後の世界" ) })