TIL(Today I Learned)

4월 14일(수)

학습내용

  • SwiftUI with 메이슨
    • View
      • UIKit에서 UIView는 클래스였으나, SwiftUI의 View는 프로토콜이다.
      • View의 구현은 View 프로토콜을 채택하고, 뷰를 구성하기 위한 내용을 body 프로퍼티에 구현을 함으로써 가능하다.
    • some
      • some은 Opaque Types을 위한 키워드이다. Opaque Types은 프로토콜을 채택한 타입의 인스턴스를 반환 할떄 타입의 정보를 감추기 위해 사용된다.
    • @Binding은 서로 다른 두 인스턴스의 프로퍼티를 연결하는 것이다. 한 인스턴스의 프로퍼티 값이 변하면 연결된 쪽 프로퍼티 값이 변한다. 한쪽은 진짜 값을 저장하는 것이고, Binding 어노테이션이 쓰여진 프로퍼티는 값을 저장하지 않고 연결된 프로퍼티의 값을 참조하는 것이다.
    • @State은 뷰와 연결되어 있는 프로퍼티로서, 프로퍼티 값이 바뀌면 뷰가 업데이트 되도록 한다.
    • VStack, HStack, ZStack
      • UIKit의 StackView와 비슷하며, 뷰를 나열할때 사용한다.
      • Vertical Stack, Horizontal Stack, Z-axis Stack
    • ContentView_Previews에 뷰의 미리보기를 구현할 수 있다.

문제점/고민한점

  • SwiftUI의 장점은 선언적(Declarative)인 프로그래밍 방식이라고 하는데 선언적이라는 것의 의미는 무엇일까? (Declarative vs Imperative)

해결방법

  • SwiftUI는 선언형이고, UIKit은 명령형(Imperative)이라고 한다. 명령형은 프로그램이 지닐 수 있는 모든 가능한 상태들을 코드(명령)로 구현하여 프로그램이 작동하도록 하는 것이다. 이와 반대로 선언형은 코드로 인스턴스를 선언하면, 프로그램의 상태에 따라 인스턴스들이 그에 맞게 작동하도록 구현하는 것이다.

참고