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에 뷰의 미리보기를 구현할 수 있다.
- View
문제점/고민한점
- SwiftUI의 장점은 선언적(Declarative)인 프로그래밍 방식이라고 하는데 선언적이라는 것의 의미는 무엇일까? (Declarative vs Imperative)
해결방법
- SwiftUI는 선언형이고, UIKit은 명령형(Imperative)이라고 한다. 명령형은 프로그램이 지닐 수 있는 모든 가능한 상태들을 코드(명령)로 구현하여 프로그램이 작동하도록 하는 것이다. 이와 반대로 선언형은 코드로 인스턴스를 선언하면, 프로그램의 상태에 따라 인스턴스들이 그에 맞게 작동하도록 구현하는 것이다.
참고