問題タブ [swift-concurrency]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - Swift でアクターを使用して、常にメイン スレッドで関数を呼び出すことはできますか?
私は最近、Swift がSwift 5.5の Actor モデルで同時実行サポートを導入したことを知りました。このモデルにより、安全な同時実行コードを使用して、共有された変更可能な状態がある場合にデータ競合を回避できます。
アプリの UI でメイン スレッドのデータ競合を回避したいと考えています。このため、プロパティまたはスタイルDispatchQueue.main.async
を設定する場所はどこでも呼び出しサイトでラップしています。UIImageView.image
UIButton
メイン キューでメソッドを手動でディスパッチすることを覚えておく必要があるため、これは安全ではないようです。他のソリューションは次のようになります。
しかし、これは多くのボイラープレートのように見えます。複数のレベルの入れ子を持つ複雑な関数にこれを使用するのが好きだとは言えません。
アクターの Swift サポートのリリースは、これに対する完璧なソリューションのように見えます。では、コードをより安全にする方法はありますか?つまり、アクターを使用してメイン スレッドで常に UI 関数を呼び出す方法はありますか?
swift - 同時実行をサポートしない関数で Swift 5.5 の 2 つのタスクの完了を待機する正しい方法は何ですか?
文字列を指定して処理を行うアプリがありますが、これは 2Task
秒で完了します。この間、私はアニメーションを表示しています。これらTask
が完了したら、アニメーションを非表示にする必要があります。以下のコードは機能しますが、見栄えがよくありません。これを行うためのより良い方法があると思いますか?