Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ラクマでのSwiftUI導入方針とTips / Rakuma SwiftUI Introduction Policy and Tips

darquro
February 16, 2022

ラクマでのSwiftUI導入方針とTips / Rakuma SwiftUI Introduction Policy and Tips

『ラクマ x STORES LTイベント ~ iOS開発の裏側 ~』での登壇資料
https://hey.connpass.com/event/236189/

darquro

February 16, 2022
Tweet

More Decks by darquro

Other Decks in Programming

Transcript

  1. 3 Table of Contents • ラクマでのSwiftUI導⼊⽅針 • SwiftUIでハマったこと • SwiftUI

    Tips Target 既存のUIKitベースのアプリに これからSwiftUI導⼊していく⼈向け。 ※普段からSwiftUIで開発している⼈には物⾜りないかも 🙇
  2. 6 Architecture ViewController Presenter UseCase APIClients DataStores Repositories SwiftUI View

    ViewModel UseCase Use APIClient directory Use Repository Application Lifecycle Update UIKit(MVP) SwiftUI(MVVM) Presentation Layer Domain Layer Entities System User 🗼ラクマでのSwiftUI導⼊⽅針
  3. 14 Previewがエラーになって時間ばかり取られる 🤯 Device modelを 定義しておくと便利👍📱 おかしいな…なんか変だなぁ…と感じたら、 • エディタを全部閉じる •

    Xcode再起動 • Clean Build • Emulatorの起ち上げ直し • DerivedData削除 最後は諦めてEmulatorで確認 💣SwiftUIでハマったところ ちなみに…
  4. 16 if #available() をViewModifierで使⽤しない💥 Exception Type: EXC_BAD_ACCESS (SIGSEGV) Thread 0

    name: Dispatch queue: com.apple.main-thread Thread 0 Crashed: 8 SwiftUI 0x00000001a07f2160 partial apply for closure #1 in ModifierBodyAccessor.updateBody+ 6332768 (of:changed:) + 28 9 SwiftUI 0x00000001a0814364 closure #1 in BodyAccessor.setBody+ 6472548 (_:) + 44 10 SwiftUI 0x00000001a07f1a64 ModifierBodyAccessor.updateBody+ 6330980 (of:changed:) + 1440 11 SwiftUI 0x00000001a08144a8 StaticBody.updateValue+ 6472872 () + 208 12 SwiftUI 0x00000001a0517764 partial apply for implicit closure #2 in implicit closure #1 in closure #1 in closure #1 in Attribute.init<A>+ 3340132 (_:) + 28 Xcode13.2 で謎クラッシュが発⽣する。しかもDebugビルドでは発⽣せず、Releaseビルドのみ起こる。 @available()でView単位の出し分けにすることで回避 https://developer.apple.com/forums/thread/697070 💣SwiftUIでハマったところ