본문 바로가기
IOS App Programming/IOS 연습

[iOS] UIKit 과 SwiftUI 의 차이점 - 명령형과 선언형의 차이

by B_Tori 2024. 4. 3.

SwiftUI VS UIKit

UIKit

  • 명령형 프레임워크
  • 뷰를 직접 생성하고 제어할 수 있어 UI를 좀 더 섬세하게 커스텀 가능
  • SwiftUI 보다 보다 많은 기능 제공 (단 최신 기술의 경우 SwiftUI의 지원이 더욱 늘어남)

SwiftUI

  • 선언형 프레임워크
  • 복잡한 UI도 훨씬 적은 양의 코드로 만들 수 있다는 장점을 가지고 있고 개발과정이 간단함.
  • 다양한 OS 호환이 쉬움.
  • 최신 프레임워크인 만큼 최신 기술들을 지원함

언제 사용하는 것이 좋은가?

  • 커스텀이 많이 필요한가? → UIKit
  • 간단하고 빠르게 앱을 개발하고 싶은가? or 최신 기술을 지원해야 하는가? → SwiftUI

하지만 필요에 따라 두가지를 같이 사용 가능하다!

 

명령형 프레임워크 VS 선언형 프레임워크

명령형 프로그래밍은 어떻게 할 것인지에 대한 방법을 제시하고 선언형 프로그래밍은 어떻게 보다는 무엇을 만들 것인지 목표를 제시한다.

  • 명령형 프레임워크란 프로그램의 흐름을 명시적으로 개발자가 작성하여 프로그램을 완성해가는 것
  • 선언형 프레임워크는 개발자가 원하는 결과물을 명시적으로 선언하기만하면 세부적인 동작은 프레임워크에게 위임하여 처리

예를 들어 UIKit 의 경우 직접적으로 제약조건을 설정하여 뷰의 위치를 개발자가 설정해 준다면,

SwiftUI의 경우 구체적인 제약조건 설정 없이 VStack에 원하는 컴포넌트들을 넣어주기만하면 프레임워크에게 컴포넌트들을 수직으로 쌓아가겠다 명시해 줌으로써 세부적인 배치는 프레임워크에서 처리함

 

명령형 프레임워크에서 선언형 프레임워크로 패러다임이 변하고 있는 것은 다음과 같은 장점들을 가지고 있기 때문이다.

  • 가독성, 재사용성, 독립성, 유지보수성에서 장점 향상

하지만 그렇다고 해서 무작정 선언형이 명령형보다 좋다! 라고 말할 수는 없다.

프레임워크적 관점이 아닌 더 크게 프로그래밍적 관점에서 잠시 살펴보자면 선언적으로 코드를 작성할 시 가독성 및 유지보수성을 높일 수 있는 장점을 얻을 수 있지만 목표에 집중할수록 그만큼 디테일적인 부분들을 직접 제어할 수 없기 때문에 예상치 못한 오류를 만날 수 있다.(명령형 프레임워크인 UIKit의 장점 중 하나가 세세한 커스텀이 가능하다는 점이 있었다.)

 

어떤 것이 정답이다 라고 말할 수는 없으며

패러다임의 변화를 빠르게 파악하는 능력과 더불어 내가 필요한 것에 맞게 방식을 선택하는 능력도 기르면 좋을 것 같다.

 

댓글