Swift5の遅延処理の方法まとめ、Dispatch・PerformSelector・NSThread【Swift/Objective-C】
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];