【Swift】Swiftでの遅延処理の実装(Swift3の場合も追記)

swiftでの遅延処理の実装

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分後の世界" )
})
タイトルとURLをコピーしました