[Swift] UIKit vs SwiftUI

주황색공·2024년 7월 26일
0

Swift

목록 보기
1/1
post-thumbnail

얼마전부터 Swift를 배우기 시작했다.

강의는 아래 Swiftful Thinking이라는 외국 유튜버를 추천받아 보기 시작했다.


Swift framework에는 SwiftUIUIKit이 있는데 그중에서 SwiftUI를 배우게 된다.

두 framework 모두 아직도 사용 가능하지만 점점 SwiftUI를 많이 사용한다고 한다. 그 이윤는 무엇일까?

오늘은 SwiftUIUIKit이 서로 어떻게 다른지 알아보려고 한다.


UIKit

UIKit는 2008년에 출시된 framework이다.

C에서 파생된 객체 지향 프로그래밍 언어인 Objective-C의 문법을 따른다.

장점

UIKit의 첫 번째 장점은 pre-built UI components가 많다는 것이다.

button, search bar 등의 UI를 사용자가 직접 만들 필요 없이 이미 UIKit에서 제공해주고 이를 Interface BuilderStoryboards를 이용해 수정하면 쉽게 UI를 꾸밀 수 있다.

Interface Builder와 Storyboards

UIKit의 두 번째 장점은 방대한 자료이다.

IOS 초창기부터 사용되었던 framework이기 때문에 굉장히 많은 문서(공식문서)들과 커뮤니티가 존재한다.

또한, 오랫동안 사용되어 온만큼 IOS의 graphics나 animation등과 같은 다른 core framework과 안정적으로 연동된다.

단점

UIKit의 첫 번째 단점은 앞서 언급했던 Interface Builder와 StoryBoards 기능이 페이지가 복잡해지고 디자인할 것이 많아질수록 View controller를 과대 사용하게 된다.

#import "ViewController.h"
          @interface ViewController ()
          @end
          @implementation ViewController
          - (void)viewDidLoad {
              [super viewDidLoad];
              // Do any additional setup after loading the view.
          }
          @end

UIKit의 두 번째 단점은 현대적인 design model을 적용하기 어렵다는 것이다. 대표적으로 reactive programming과 dependency injection 등이 있다.

// reactive programming: 데이터 스트림과 변경 사항 전파를 중심으로하는 비동기 프로그래밍 패러다임
// dependency injection: 객체 간의 관계를 결정해주는 디자인 패턴

UIKit을 활용해 현대적인 design을 하기 위해서는 개발자가 직접 코드를 작성해야 된다.


SwiftUI

기존의 Story Boards가 복잡한 design일수록 개발하는데 어려움이 있었는데 이를 해결하는 framework를 2019년에 제시했다.

장점

SwiftUI의 첫 번째 장점은 HTML과 같은 선언형 프로그래밍이기 때문에 디자인 요소들을 생성하고 그들의 속성을 선언하는 방식을 이용한다.

import SwiftUI
          struct ContentView: View {
              var body: some View {
                  VStack {
                      Image(systemName: "globe")
                          .imageScale(.large)
                          .foregroundColor(.accentColor)
                      Text("Hello, world!")
                  }
                  .padding()
              }
          }

SwiftUI의 두 번째 장점은 Statedata binding이 제공하는 reactive programming이다.

State와 data binding을 통해 data의 변화를 빠르게 감지하고 다시 렌더링해서 관련된 모든 값을 변경시킨다.

import SwiftUI
          struct ContentView: View {
              @State private var message:String="How is your morning"
              var body: some View {
                  VStack {
                      Text("State and Data binding!")
                      BodyView(message: $message)
                  }
                  .padding()
              }
          }
          struct BodyView:View{
              @Binding var message: String
              var body: some View {
                  VStack {
                      Image(systemName: "globe")
                          .imageScale(.large)
                          .foregroundColor(.accentColor)
                      Text(message)
                  }
                  .padding()
              }
          }

단점

SwiftUI의 첫 번째 단점은 버전이 iOS 13부터만 지원된다는 것이다.

다만, SwiftUI와 UIkit는 서로 화환이 되기 떄문에 이를 이용해 더 오래된 iOS 버전에서도 사용할 수 있도록 만들 수 있다.

SwiftUI의 두 번째 단점은 상대적으로 UI component가 적다는 것이다.

하지만 기존에 UIKit가 워낙 방대한 UI Component를 제공했기도 했고 오히려 이를 활용해 코딩이 쉬운 SwiftUI에 적용시키는 방법도 많이 사용된다.

마무리

Swift 언어를 사용하는 두 가지 framework, UIKitSwiftUI를 알아보았다.

UIKit의 경우에는
더 원시적인 framework이기 때문에 Swift 언어에 익숙하고 다양한 UI component를 쓰는 개발자에게 좋을 것 같다.
또한, 구형 iOS까지 지원되는 앱을 만들기 위해서는 꼭 필요한 framework이다.

SwiftUI의 경우에는
애초에 UIKit를 더 간편하게 빠르게 사용하기 위해 만들어진 framework이기 때문에 초보자에게 더 적합하다.
그리고 현대의 다양한 design model 기법들을 내장하고 있고 복잡한 앱이라도 쉽게 제어할 수 있다는 것이 장점이다.

profile
초보 개발자

0개의 댓글