Mobile/Swift

[SwiftUI] SwiftUI 문서 찍먹하기

펭귄알 2024. 11. 11. 15:45

 

 

이번 글에서는 예전에 UIKit, Storyboard 개발을 다 해보았지만 SwiftUI에 대해서는 얕은 지식을 가지고 있다는 생각이 들었습니다. 저의 궁극적인 목표는 UIKit과 SwiftUI 모두 구현하여 두가지를 하나의 프로젝트에 녹여내는게 제 목표입니다.

아래는 각각의 사용후기를 적어보았습니다.

사용후기

UIKit

장점

  • 오랫동안 사용되어 아직도 사용되는곳이 많습니다.
  • 레퍼런스가 많습니다.

단점

  • CodeBase로 UI를 구현하다보니 코드의 양이 방대해집니다. (관리가 필요하다)
  • SwiftUI처럼  Preview가 지원되지않음습니다.

SwiftUI

장점

  • UIKit에 비해 적은 양의 코드로 UI개발이 가능합니다.
  • 실시간 미리보기를 통해 빠른 개발이 가능합니다.

단점

  • UIKit에 비해 새로운 개념과 접근 방식을 익혀야 합니다.
  • iOS 13 이상에서만 사용가능합니다.

요즘 Flutter 개발을 통해 선언형 UI 패러다임에 적응을 했는데, SwiftUI를 이해하는데 많은 도움이 되지않을까 싶습니다. 요구사항에 따라 사용하는 기술은 다르겠지만, 결국 2가지를 다 사용할 줄 알아야 제 미래에 도움이 될 거 같네요... ?

 

공식문서를 찾아보면 아래와 같이 정리되어있습니다.

 

@State, @Binding, @Bindable 그리고 @ObservableObject등 다양한 개념들이 추가되었습니다. 이 내용에 대해 정리 해볼게요.

Creating and Sharing View State

  • State: SwiftUI에서 뷰의 상태를 관리하기 위한 프로퍼티 래퍼입니다. 뷰 내부에서 상태를 선언하고 관리할 때 사용됩니다.
  • Bindable: 데이터 바인딩을 지원하는 프로토콜로, 뷰와 데이터 간의 동기화를 쉽게 할 수 있습니다.
  • Binding: 부모 뷰와 자식 뷰 간에 데이터를 공유하고 동기화하는 데 사용되는 프로퍼티 래퍼입니다.

Creating Model Data

  • StateObject: SwiftUI에서 객체의 상태를 관리하기 위한 프로퍼티 래퍼입니다. 뷰가 처음 생성될 때 객체를 초기화하고 소유합니다.
  • ObservedObject: 외부에서 생성된 객체를 관찰하고, 해당 객체의 상태가 변경될 때 뷰를 업데이트합니다.
  • ObservableObject: 데이터 모델이 변경될 때 이를 알리기 위해 사용하는 프로토콜입니다. @Published 속성을 통해 변경 사항을 브로드캐스트할 수 있습니다.