IOS
 Computer >> コンピューター >  >> プログラミング >> IOS

Swift(iOS)で遅延した後にメソッドを呼び出す方法は?


この投稿では、Swiftを使用してメソッド呼び出しを遅らせる方法を説明します。ここでは、2つの方法で同じことを達成する方法を見ていきます。

それでは始めましょう

Playgroundで両方の例を見ることになります

ステップ1-Xcode→NewPlaygroundを開きます。

最初のアプローチでは、asyncAfter(deadline:execute :)インスタンスメソッドを使用します。このメソッドは、指定された時間に実行するようにワークアイテムをスケジュールし、すぐに戻ります。

詳細については、https://developer.apple.com/documentation/dispatch/dispatchqueue/2300020-asyncafter

をご覧ください。

ステップ2-Playgroundで以下のコードをコピーして実行します

func functionOne() {
   let delayTime = DispatchTime.now() + 3.0
   print("one")
   DispatchQueue.main.asyncAfter(deadline: delayTime, execute: {
      hello()
   })
}
func hello() {
   print("text")
} functionOne()

ここでは、1つの関数functionOneを作成しています。ここでは、最初に3秒の遅延時間を宣言しています。次に、asyncAfterを使用して、遅延時間をパラメーターとして指定し、3秒後にhello()関数を実行するように要求しています。

上記のプログラムを実行すると、最初に「1つ」が印刷され、3秒後に「テキスト」が印刷されます。

2番目のアプローチでは、NSTimerを使用します

以下のコードをXcode→シングルビューアプリケーションにコピーできます

class ViewController: UIViewController {
   override func viewDidLoad() {
      super.viewDidLoad()
      print("one")
      Timer.scheduledTimer(timeInterval: 3, target: self, selector: #selector(ViewController.hello), userInfo: nil, repeats: false)
   }
   @objc func hello() {
      print("text")
   }
}

アプリケーションを実行すると、同じ出力が表示されます。1つが印刷され、3秒後にテキストが印刷されます。


  1. JavaでinvokeLater()メソッドを呼び出すにはどうすればよいですか?

    invokeLater() メソッドは静的です SwingUtilitiesのメソッド クラスであり、タスクを非同期に実行するために使用できます。 AWT イベントディスパッチャスレッド 。 SwingUtilities.invokeLater() メソッドはSwingUtilities.invokeAndWait()のように機能します ただし、リクエストはイベントキューに配置されます そしてすぐに戻る 。 invokeLater() メソッドは、実行可能内のコードのブロックを待機しません ターゲットによって参照されます 実行します。 構文 public static void in

  2. iOSで緊急通報機能を無効にする方法

    緊急時には、911にダイヤルできる速度が速いほど良いです。緊急サービスにできるだけ早く接続できるように、iPhoneにはいくつかの緊急電話のショートカットが用意されています。ただし、誤って911にダイヤルする可能性も高くなります。たとえば、子供にiPhoneでモバイルゲームをプレイさせた場合、誤ってアクティブ化する可能性があります。 この記事では、iOSの緊急通報のショートカットをすべて取り上げます。また、これらの緊急通報設定を微調整または無効にして、誤って911にダイヤルする可能性を減らす方法も示します。 iPhoneで911に自動的に電話をかける方法 誤って911に電話をかけないよう