Avatar
Avatar
takenoko
https://qiita.com/fuziki/items/6fe7a304b30146ba43c7 SwiftUI Viewの中にクロージャーを設けることは結構あるかと思いますが、みなさんも上の記事のように、更新を抑えるためにSwiftUI ViewにEquatableを継承してクロージャーを差分チェックから除外する実装をしているのでしょうか? 今回実装しているのはただのボタンなので、何度も更新されようが構いませんが、気になっています。
それとその記事は ObservableObject ベースでの議論で、その仕組みはSwiftUIのレイアウトエンジンは ObservableObject 全体を objectWillChange Publisherの購読によって監視してるので、何か一つでもプロパティーに更新があったら ObservableObject の全てのプロパティーに比較処理が走ってしまいます; ところが今iOS 17以上なら使える Observation フレームワークの @Observable なら、一つ一つのプロパティーが監視対象になるので、余計な比較処理や再レンダリング処理が省かれてだいぶパフォーマンスが良くなってるはずですので、iOS 17未満の対応が必要なければ是非こちらの利用を強くお勧めします 🙋
❤️ 1