패스트캠퍼스/iOS앱개발올인원패키지

패스트캠퍼스 챌린지 13일차

웬즈데이 2021. 11. 13. 13:39

오늘은 구조체의 프로퍼티에 대해서 학습을 하였다. 

기본적인 프로퍼티는 구조체 내에 변수를 선언을 하면 된다. 

 

struct Person {
    // stored property
    var firstName: String
    var lastName: String
    
    // computed property
    var fullName: String {
        get {
             return "\(firstName) \(lastName)"
        }
        
        set {
            if let firstName = newValue.components(separatedBy: " ").first {
                self.firstName = firstName
            }
            
            if let lastName = newValue.components(separatedBy: " ").last {
                self.lastName = lastName
            }
        }
    }
}

이는 stored property라고 하고 var 보다는 let을 이용을 해서 선언을 하는 것이 권장된다. 

이에 비교되는 property로는 computed property라고 있다. 접근자를 지정을 해줌으로써

사용을 할 때 원하는 형식으로 값을 반환을 할 수가 있다. 

 

기본적으로 get, set 지정자를 선언해주지 않으면 값을 얻어오기만 하고 설정을 할 수 없다는 특징이 있다.

위의 코드에서는 get, set 지정자를 만들어줬기 때문에 값을 설정할 수 있는 것이다. 

 

그다음 프로퍼티 종류로는 type property가 있다. 

인스턴스에 상관없이 구조체 타입 자체에 정의되는 프로퍼티다. 

클래스로 따지면 클래스 변수라고 생각할 수 있다. 

 

프로퍼티는 didSet 키워드를 이용해서 바뀌는 시점을 알 수 있다. 

즉 observation을 할 수 있는데, didSet외에 willSet이라는 키워드도 존재한다. 

willSet이 먼저 일어나고 didSet은 그 다음에 일어난다. 

이벤트처리 방식을 고려하여 이런 기능을 넣은 것 같다. 

 

다른 키워드로 lazy를 이용해서 lazy property를 만들 수 있다. 

lazy는 사용하기전에 뭔가를 계산하기 부담스러운 것들을 처음 호출할 때 계산을 하도록 하는 것이다. 

즉 사용하기 전까지는 아무런 부하도 가하지 않도록 설계할 수 있다. 

 

오늘까지 구조체의 프로퍼티까지 학습을 완료하였다. 

내일은 구조체의 메소드 공부를 끝으로 구조체는 끝낼 예정이다. 

 

https://bit.ly/3FVdhDa

 

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.

 

#패스트캠퍼스 #패캠챌린지 #직장인인강 #직장인자기계발 #패스트캠퍼스후기 #iOS앱개발올인원패키지