Swift5の遅延処理の方法まとめ、Dispatch・PerformSelector・NSThread【Swift/Objective-C】

2020年8月26日

Dispatch・PerformSelector・NSThreadの3種類の方法で処理を遅延実行させる方法をご紹介します。

基本的に使いやすいのはメインスレッド(非同期)、サブスレッド(非同期)を指定できるDispatchを使用したスレッド遅延だと思います。

ですが場合によっては他の遅延処理を使用した方が実装が楽という場合もあると思うので合わせて覚えておきましょう。

Dispatchを使用したスレッド遅延

Swift5

DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) {
    print("1秒後の処理")
}

Objective-C

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 1.0 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
    NSLog(@"1秒後の処理");
});

セレクタを指定して遅延実行

Swift5

self.perform(#selector(selector), with: nil, afterDelay: 1.0)

Objective-C

[self performSelector:@selector(selector) withObject:nil afterDelay:1.0f];

スリープを利用した遅延

Swift5

Thread.sleep(forTimeInterval: 1.0)

Objective-C

[NSThread sleepForTimeInterval:1.0f];