 Apple Lover Developer & Artist

영속적인 디자인에 현대의 공감을 채워넣는 공방입니다

반응형

 Apple 72

Lecture 6 Review Part 1: Protocols Shapes

Protocol 프로토콜은 구현 내용이 제거된 struct 혹은 class이다. 함수나 변수가 정의되었지만 내용이 없는 코드는 다음과 같이 생겼다. protocol Moveable { func move(by: Int) var hasMoved: Bool { get } var distanceFromStart: Int { get set } } 프로토콜을 정의해두면 다른 struct나 class가 해당 프로토콜을 포함하여 명세에 대한 구현을 할 수 있다. struct PortableThing: Moveable { // must implement move(by:), hasMoved and distanceFromStart here } 결국 어느 struct나 class가 어느 프로토콜을 포함하여 정의된다는 것은 다..

Lecture 5 Review Part3: Properties Layout @ViewBuilder

Property Observers "Watching" a var and reacting to changes 이전 데모 영상에서 computed property 개념을 다루었는데 많은 사람들이 property observer와 computed property의 개념을 혼동하는 경우가 많다고 한다. 이번 기회에 두 개념을 양옆에 두고 차이점을 이해해보는 시간을 가져보자! 두 개념은 완전히 다른 개념이기 때문이다. 이전에 우리는 Swift가 struct의 변동 여부를 알 수 있다는 점을 여러 측면에서 봐왔다. 그중 가장 중요한 두 지점이 있는데 ViewModel에서 struct로 선언된 model이 연결될 때 @Published 키워드를 선언함으로써 model이 변경될때마다 @Published는 자동으로 세계..

Lecture 5 Review Part2: Properties Layout @ViewBuilder

Code Refactoring 지난 강좌에 이어서 기존에 작성된 Code 들을 Review 해보는 시간을 가져보도록 하자! 기존에 작성된 Model 코드를 살펴보면 다음과 같은 게임 logic 구현부를 찾을 수 있다. struct MemoryGame where CardContent: Equatable { private(set) var cards: Array private var indexOfTheOneAndOnlyFaceUpCard: Int? mutating func choose(_ card: Card) { if let chosenIndex = cards.firstIndex(where: { $0.id == card.id }), !cards[chosenIndex].isFaceUp, !cards[chosen..

Lecture 5 Review Part1: Properties Layout @ViewBuilder

@State 이전에도 보았드시 SwiftUI에서 모든 View struct는 읽기전용이다. 따라서 View를 처리할 때 let이나 computed var를 사용하는 것만이 유의미하다. 다만 @ObservedObject와 같이 property wrapper가 사용되는 경우에는 var을 사용한다. 왜 View는 Read-Only 일까? View는 매번 생성되고 버려진다. View의 body는 주변에 붙어있다. View의 body가 화면에 있다면 당연히 어딘가에 존재한다. 하지만 그 body를 만든 View는 아마도 오래전에 버려졌을 것이다. 여튼 View 구조체는 mutable한 var을 가질만큼 오래 살아있지 않는다. 하지만 걱정할 필요없다. 우리의 View는 Stateless하기 때문에 자신의 상태는 필..

Lecture 4 Review Part2: Memorize Game Logic

Varieties of Types enum 열거형(enumeration) 은 일종의 구조체와 클래스와 같으며 이산적인 값만을 갖고 있다. 예시를 보면 쉽게 이해될 것이다. enum FastFoodMenuItem { case hamburger case fries case drink case cookie } 어느 패스트푸드 판매점은 위와 같이 4가지의 품목만 판매한다. 햄버거, 감자튀김, 음료 및 쿠키가 그 예시일 것이다. 옵션이 특정 범위로 정해져 있는 경우 enum 을 사용하면 이산적인 값만을 갖고 있다는 특징을 살려서 훨씬 더 직관적으로 활용할 수 있게된다. enum 또한 struct 타입과 마찬가지로 value 타입이며 이러한 사유로 함수의 인자나 다른 변수로 넘길 때 값복사가 발생된다. Swift에..

반응형