ひとしれずひっそり

主にソフトに関することをメモしていきます。過程をそのまま書いていたりするので間違いが含まれます。鵜呑みしない様に。

onChange に気をつけろ(onChangeだけじゃないけどな)

SwiftUIで onChange を使ったらハングアップしてしばらくしてからクラッシュする現象が出た。
なんかViewが再帰的に呼び出されている様でクラッシュに至る様だ。
ストップボタンもしばらく受け付けてくれない様な状況で、クラッシュするのを待つだけしか手がない。

こんな感じで書いてたんだけど、

SomeView()

.onChange(of: hoo) { newValue in
}

実はonChangeの前のドットを入れ忘れてこうなってた。

SomeView()

onChange(of: hoo) { newValue in
}

コンパイル時点でエラーで弾かれそうだが、なんか通ってて原因が分からずってことになってた。
分かるまでほんと大変だった。

試しに onAppear もドット外してみたらコンパイルが通る。
これは気をつけないといけない。