変数 SwiftUI | classの変数が変化したときにViewを更新する方法 SwiftUIでclassの変数が変化したときにViewを更新する方法を説明する。■結論 1. classをObservableObject準拠にする。 2. 変数に@Publishedを付ける。 3. classのインスタンスに@ObservedObjectを付ける。 2022.12.28 変数
変数 SwiftUI | はてなマーク1つの意味 はてなマーク1つの意味を説明する。■結論 はてなマーク1つはオプショナルチェーン(Optional Chaining)を表す。使用例としてはValue of optional type 'xxx?' must be unwrapped to refer to member 'yyy' of wrapped base type 'xxx'のエラーを回避するときに使用する。 2022.12.11 変数
SwiftUI SwiftUI | weak selfの効果を実験で理解する SwiftUIのweak selfの効果を実験で理解した結果を説明する。◾結論 weak selfを使わないと強い参照となり、生成した全てのインスタンスが全て実行されるまでそのインスタンスがメモリに占有され続けるが、全てを実行してくれる。weak selfを使うことで弱い参照となり、クラスのインスタンスを新しく生成するごとに前に生成したクラスのインスタンスが消えてメモリが開放される。どちらを使うかはそれぞれの特徴をわかった上で決めれば良い。 2022.10.10 SwiftUI変数
変数 SwiftUI | はてなマーク2つの意味 SwiftUIのはてなマーク2つの意味を説明する。◾結論 nilガード的な意図で使われる。例えば let 変数1 = 変数2 ?? 値1 というコードなら、変数2の値がnilではない場合は、変数2の値が変数1に代入される。変数2の値がnilの場合は、値1が変数1に代入される。 2022.10.04 変数
SwiftUI SwiftUI | weakの意味と目的 SwiftUIのweakの意味と目的を説明する。◾結論 weakを付けて定義した変数は弱参照する変数になり、そのことで循環参照を防止できる。 2022.10.03 SwiftUI変数
変数 SwiftUI | AnyCancellable, objectWillChange.sink/sendの使用目的 SwiftUIのAnyCancellable, objectWillChange.sink/sendの使用目的を説明する。◾結論 使用目的を一言でいうと、Viewを更新することである。Model-View-ViewModelの構造においてAnyCancellable, objectWillChange.sink/sendをViewModelに記述する。 Modelのオブジェクト.objectWillChange.sinkでModelの変化を監視する。 self.objectWillChange.sendでViewModel自身が変化したことをViewに伝える。 このことによりViewが更新される。 2022.10.02 変数
SwiftUI SwiftUI | How to fix “Cannot assign to property: ‘self’ is immutable” This article describes how to fix "Cannot assign to property: ‘self’ is immutable". [Conclusion] Add @State to the variable you want to change. 2022.09.24 SwiftUI変数
SwiftUI SwiftUI | if let と guard let の意味と使い方 SwiftUIの if let と guard let の意味と使い方を説明する。■結論 if letはオプショナルの変数がnilかどうかを普通に確認するだけ。guard letはオプショナルの変数がnilかどうかを確認しnilの場合は強制returnする。 2022.09.03 SwiftUI変数
SwiftUI SwiftUI | static の意味と使い方 SwiftUI の static の意味と使い方を説明する。■結論 変数宣言時に static を付けると変数の値が固定値となる。 2022.09.03 SwiftUI変数
SwiftUI SwiftUI | Publishing changes from background threads is not allowed; make sure to publish values from the main thread (via operators like receive(on:)) on model updates.の対処方法 SwiftUIのPublishing changes from background threads is not allowedの対処方法を説明する。■結論 DispatchQueue.main.async { }を使う。 2022.08.28 SwiftUI変数