UIKit vs. SwiftUI

어떤 프레임워크가 올바른 선택일까?

  • SwiftUI는 높은 버전부터 특정 기능을 제공함

    • UIKit은 낮은 버전에서 부터 지원하여 개발에 용이

    • 따라서 SwiftUI에서 해당 기능을 사용하기 위해 커스텀 제작 또는 라이브러리 사용 그리고 UIKit 활용으로 해결함

  • SwiftUI가 UI를 그리기 용이함???

    • 선언형이라 확실히 그리기 용이함

    • 그러나 UIKit에도 UI를 그리기 좋은 라이브러리 다수 존재

    • FlexLayout, PinLayout을 활용하면 선언형과 동일하게 그리기 용이하다고 생각함

  • 아키텍처 선택

    • 직접 아키텍처를 설계하는 선택지 존재

    • Coordinator 패턴을 사용하기에는 UIKit이 적합하다 생각함

      • UIKit은 리턴 타입을 UIViewController를 사용하면 되므로

    • 직접 설계하지 않는다면 SwiftUI는 선택 폭이 얼마 없음

      • UIKit - RIBs, ReactorKit, TCA, etc ...

      • SwiftUI - TCA, ???

  • Preview 활용은???

    • 둘 다 비슷한 것 같음

    • 결국 앱 크기 커지면 활용하기 어려움

    • 잘 활용하려면 모듈화를 잘 해야할 것 같음

      • 아직 경험이 적어서 그런지, Class를 활용하는 것이 모듈화하기 편한 것 같음

  • 의존성 주입

    • 인터페이스 모듈을 만들기 위해서는 protocol과 의존성 주입을 활용해야 함

    • 결국 의존성 주입은 컴파일 타임에 의존성이 확인이 보장되어야 함

결론.

watchOS, macOS 앱을 만들 생각이 아니면? UIKit을 활용하는 것이 좋을 것 같음

사실 watchOS도 기존에 SwiftUI로 코드를 작성했다고 해서 엄청나게 기존 코드를 활용하는 것은 아닌 듯한 느낌 🤓

Last updated