Swift 3では、ユーザがボタンを押してキャンセルできるループがあります。ループ内でいくつかのチェックが行われます。チェックの後、タスクは1分間スリープ状態になります。エンドレスループ内で自分自身を待ちますが、ユーザは毎回キャンセルできます
let delayQueue = DispatchQueue(label: "com.myApp.queue3", qos: .utility)
let additionalTime: DispatchTimeInterval = .seconds(3)
repeat {
delayQueue.asyncAfter(deadline: .now() + additionalTime) { self.update() }
} while !self.stop
自体が「停止」ユーザー を待っているすべての時間を実行するために必要なループでタスクを呼び出す場合でも、ユーザーが停止ボタンをクリックしたこと、を示しています。 CPUの消費が浪費していますか?どのようにしてこのループが常に行われるのを避けることができますか?
ありがとうございます、それは私が好きなほど簡単です。 –
あなたはようこそ! –
1つの質問:上記の解決策では、タイマーはメインDispatchQueue上でタスクを呼び出していますか?メインキューで実行されるダイアログ項目の更新がないため、別のキューとして開始する必要があります。ユーティリティ。 –