Avatar
1 回目は呼ばれなくて 2 回目以降呼ばれますよね?それは StateObjectinit(wrappedValue:) がクロージャを受け取るのに対して Stateinit(wrappedValue:) は値を受け取るから,2 回目以降の (画面が開かれているうちは最初のだけがずっと使いまわされるので) 捨てられる運命にある ChildViewModelinit()deinit が無駄に発火してしまっているところです.クロージャだとまだ init が実行されていないのでStateObject でも捨てられるのは一緒なんですがより遅延評価的な感じになっているという感じですね.
7:21 AM
確認した訳じゃないですが,初期化されて捨てられるだけのインスタンスだったらリリースビルドの時は最適化で消えたりしないんでしょうか (edited)