본문 바로가기
iOS/SwiftUI

[iOS/SwiftUI] 기존 UIKit과는 어떤 차별점이 있나요?

by iosdevlime 2022. 12. 11.

Swift 문법을 학습하고, 활용하는 궁극적인 목표 중 하나로

Application, 즉 나만의 앱을 만드는 과정을 꿈꾸고 있을 것입니다.

 

iOS 앱 개발을 위한 UI 프레임워크

크게 UIKitSwiftUI로 구분되고, 개발자들에 의해 활용되고 있습니다.

(프레임워크 관련 포스팅은 추후 iOS 공통 포스팅에서 다루도록 하겠습니다) 

 

 

그 중, SwiftUI는 모든 Apple 플랫폼(iOS, iPadOS, macOS, watchOS, tvOS 등)

'단 한번의 개발과정' 을 통해 만들 수 있는 개발 도구로서 발 빠르게 성장하고 있습니다.

 

 

이번 포스팅에서는,

SwiftUI의 전반적인 소개와 UIKit과의 관계에 대해 다뤄보도록 하겠습니다.

 

 

 


 

 

 

SwiftUI란 어떤 도구인가요?

단 한번의 개발, 모든 Apple 플랫폼의 UI를 다루는 새로운 개발 패러다임

 

WWDC 19에서 공개된 SwiftUI는 기존 UIKit(Storyboard)의 단점과 한계를 보완하기 위한 

새로운 UI 개발 프레임워크이자, 패러다임 으로 소개하고 있습니다.

출처 : WWDC 2019 Keynote  | Apple (Youtube)

 

기존 Objective-C를 기반으로 활용되는 개발 프레임워크 패러다임은

 

Cocoa Framework 및 Cocoa Touch Framework 내 포함된

UIKit(ipad OS, iPhoneOS)AppKit(MacOS)를 기반으로 진행되어 왔습니다.

 

하지만,

WWDC14에서 발표한 우리의 새로운 언어인 Swift의 등장에 발맞춰

해당 언어의 패러다임에 부합하는 UI 개발 프레임 워크가 필요하게 되었으며,

 

이에, Swift를 기반으로 한 SwiftUI가 등장하게 된 것입니다.

 

새로운 언어가 개발되었으니, UI 개발 프레임워크도 필요하지 않을까?
새로운 언어가 개발되었으니, UI 개발 프레임워크도 필요하지 않을까?

 

 

 

SwiftUI의 목표

  • 앱 개발을 더 빠르고 쉽게 하며, 개발 단계에서의 버그를 줄이는 것을 목표로 합니다. 
    • 기존 Storyboard 방식의 경우, 복잡한 코드로 인해 데이터의 흐름을 따라가기 어렵습니다.
      (이로 인해 개발자 간의 협업 문제가 빈번하게 발생하며, Conflict 오류가 자주 발생합니다)
    • 그래서 SwiftUI는 '빠르고 쉬운 개발, 버그 줄이기' 를 주요 목표로 설정합니다.
  • 특히 개발 과정을 실시간으로 테스트 할 수 있는 Live Preview 기능을 사용할 수 있습니다.
    • UIKit은 빌드(Build)를 통해 개발자가 구성한 UI를 볼 수 있다는 불편함이 있습니다.

 

 

 

SwiftUI의 특징

  • SwiftUI는 크게 2가지 특징을 가지고 있는 새로운 개발 패러다임입니다. 
    • 첫 번째, 선언형 구문(declarative syntax)의 활용입니다.
      • 선언을 통한 비교적 간단한 레이아웃 View를 구성할 수 있습니다.
    • 두 번째, 데이터 주도적(data driven) 방식의 채택입니다.
      • 단순하게 얘기하자면, 특정 프로퍼티를 게시 및 구독함으로서
      • 추가적인 코드 작성 없이 변경사항을 자동 업데이트 할 수 있습니다. 

 

 

SwiftUI의 목표와 특징은 추후 기능별 포스팅에서 구체적으로 살펴볼 예정입니다.

'이러한 특징이 있구나~' 정도만 알고 넘어가셔도 됩니다.

 

 

 


 

 

 

그렇다면, SwiftUI는 UIKit을 대체할 수 있나요?

SwiftUI와 UIKit은 혼용이 가능한 상호 보완적 관계 

 

그렇다면, 현재 iOS 앱 개발 생태계는 SwiftUI를 중심으로 변화되었을까요?

 

답은 '그렇지 않다, 하지만 곧 변화될 것이다' 라고 정의내릴 수 있겠습니다.

여전히 기존의 수 많은 앱은 UIKit 프레임워크로 개발 되었으며, 유지되고 있기 때문입니다.

이미 상용화된 수 많은 앱은 UIKit 프레임워크를 통해 개발되었을 가능성이 높다이미 상용화된 수 많은 앱은 UIKit 프레임워크를 통해 개발되었을 가능성이 높다
이미 상용화된 수 많은 앱은 UIKit 프레임워크를 통해 개발되었을 가능성이 높다

 

 

그렇기 때문에, SwiftUI가 UIKit을 대체하는 것은 현재로선 불가능하다고 볼 수 있습니다.

(SwiftUI를 잘 뜯어보면, UIKit에서 사용되는 코드가 숨겨져 있습니다)

 

결과적으로, SwiftUI는 멀지 않은 미래에 그 활용범위가 점차 넓어질 것은 분명합니다.

다만, UIKit과의 관계는 '대체' 가 아닌 '상생' 이므로,

개발자로서 두 마리의 토끼를 모두 잡는 것이 필요합니다.

 


SwiftUI의 등장배경, 그리고 UIKit과의 관계에 대하여 살펴보았습니다.

 

추후 SwiftUI관련 포스팅에서는

X-Code를 활용한 앱 개발 프로젝트 구현 과정을 따라가며

주요 기능을 알아가 보도록 하겠습니다.

댓글