Check localizable strings with the accented pseudolanguage in Xcode SwiftUI での文言ローカライズについて SwiftUI ではいくつかローカライズ文言用のキー定義の方法がある まず Text() に渡す string literal は 暗黙的に LocalizedStringKey になっているのでローカライズされる また String も String(localized:) で initialize すればそのローカライズされる Xcode の scheme 設定で App Language に Accented PseudoLanguage という選択肢がある これを設定するとローカライズされていない文言が分かりやすくなる(ローカライズされている文言は架空の文字列になる) Should we manually call @StateObject initializer @StateObject を初期値ではなく、 StateObject(wrappedValue:) を使って初期化するのは大丈夫なのか?という記事 例えば初期化時に何かパラメータが必要なものなど動的にしたいなど 結論 initializer の中でなら問題ないが副作用に注意らしい Animated Launch Screen in SwiftUI Splash screen と TOP 画面でどのように画面遷移を自動(通信完了と同時に dimiss)させるか @EnvironmentObject を使って app top で持っている @StateObject を inject しているのが勉強になった When does a SwiftUI Environment get retained? SwiftUI の EnvironmentObject がどのようにメモリ上で持たれているかの記事 leak している view に .environmentObject() するとそれに引きずられて leak するという話 Running Code Only Once in SwiftUI 画面表示時など、一度だけ実行させたいコードがある状況は良く出てくる 例えば .onAppear だと画面が push/pop すると再度呼ばれてしまう この記事では .onFirstAppear という extension を作って、その内部で FirstAppear という ViewModifier を用意しそこで flag 管理することで解決していた How to check for network connection and present an alert in SwiftUI NWPathMonitor を使った ObservableObject を作り、それを @EnvironmentObject として application の最上位から inject する方法 子 View に関しては @EnvironmentObject すれば該当のオブジェクトを取得できるので便利 Share files between your iOS app, Widget and WatchKit extensions iOS の sandboxed な環境下で App Extension 間でどのようにファイルを共有するか WatchKit Extension だと session という概念を通じてやりとりするのは知らなかった Improve App Launch Time 2022 Edition 環境変数 DYLD_PRINT_STATISTICS は動かなくなった 代わりに Instruments の App Launch テンプレートで計測できるようになった Debug ではなく Release ターゲットで計測するようにする Test 用の Target テンプレートである UI Testing Bundle を使うと起動時間を計測するテストが予め含まれている Xcode Organizer にある Launch Time metrics も有効