[解決済み] dispatch_after - GCD in Swift?
2022-02-13 23:35:34
質問
を調べました。 iBook がAppleから提供されていますが、それに関する定義は見つかりませんでした。
の構造を説明できる人はいますか?
dispatch_after
?
dispatch_after(<#when: dispatch_time_t#>, <#queue: dispatch_queue_t?#>, <#block: dispatch_block_t?#>)
解決方法は?
構造をより明確に
dispatch_after(when: dispatch_time_t, queue: dispatch_queue_t, block: dispatch_block_t?)
dispatch_time_t
は
UInt64
. その
dispatch_queue_t
は、実は型エイリアスで
NSObject
しかし、キューを取得するためには、使い慣れた GCD メソッドを使用すればよいのです。ブロックはSwiftのクロージャです。具体的には
dispatch_block_t
は次のように定義されます。
() -> Void
と等価である。
() -> ()
.
使用例です。
let delayTime = dispatch_time(DISPATCH_TIME_NOW, Int64(1 * Double(NSEC_PER_SEC)))
dispatch_after(delayTime, dispatch_get_main_queue()) {
print("test")
}
EDITです。
を使うことをお勧めします。
mattの素晴らしい
delay
機能
.
EDIT 2:
Swift 3では、GCDの新しいラッパーが登場する予定です。こちらをご覧ください。 https://github.com/apple/swift-evolution/blob/master/proposals/0088-libdispatch-for-swift3.md
元の例をSwift 3で書くと以下のようになります。
let deadlineTime = DispatchTime.now() + .seconds(1)
DispatchQueue.main.asyncAfter(deadline: deadlineTime) {
print("test")
}
なお
deadlineTime
として宣言します。
DispatchTime.now() + 1.0
となり、同じ結果になります。
+
演算子は次のようにオーバーライドされます(同様に
-
):
-
func +(time: DispatchTime, seconds: Double) -> DispatchTime
-
func +(time: DispatchWalltime, interval: DispatchTimeInterval) -> DispatchWalltime
これは、もしあなたが
DispatchTimeInterval
enum
で、数字だけを書くと、秒を使っているとみなされます。
関連
-
[解決済み] Swift 3、Swift 4、それ以降で dispatch_sync, dispatch_async, dispatch_after などはどうすればいいですか?
-
[解決済み] インスタンスに送信されたセレクタが認識されない」を解決するには?
-
[解決済み] SwiftからObjective-Cのコードを呼び出すにはどうしたらいいですか?
-
[解決済み] 制約条件の変更をアニメーションで表現するには?
-
[解決済み] Swiftで#pragmaマーク?
-
[解決済み] Swift Betaのパフォーマンス:配列のソート
-
[解決済み] SwiftでURLから画像を読み込む/ダウンロードする
-
[解決済み] Swift 3, 4, 5 で dispatch_after GCD を書くにはどうしたらいいですか?
-
[解決済み】メインスレッドでタスクを実行するGCD
-
[解決済み]SwiftでどのようにGCDメインスレッド上のパラメータを持つメソッドを呼び出すには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Xcodeのビルド失敗 "アーキテクチャx86_64の未定義シンボル"
-
[解決済み】開発者の身元が確認できないため開けない
-
[解決済み] Xcode 4でNSZombieEnabledを設定するにはどうすればよいですか?
-
[解決済み] Swiftでディレイを作成するには?
-
[解決済み】Swift 3で遅延をプログラムする方法
-
[解決済み】Cocoaでスタックトレースをコンソール/ログに出力するにはどうすればいいですか?
-
[解決済み】SwiftでTimer(旧NSTimer)を使用するにはどうすればよいですか?
-
[解決済み】isEqual:とハッシュをオーバーライドするためのベストプラクティス
-
[解決済み] swiftの遅延機能【重複】について
-
[解決済み] UILabelのテキストをアニメーションで変更する