10.1.4 프로퍼티와 감시자
프로퍼티 감시자(프로퍼티옵저버)를 사용하면 프로퍼티의 값이 변경됨에 따라 적절한 작업을 취할 수 있다.
프로퍼티 감시자는 값이 새로 할당될 때마다 호출됨. 이 때 변경되는 값이 현재의 값과 같더라도 호출.
프로퍼티 감시자는 저장 프로퍼티, 저장 프로퍼티, 연산 프로퍼티에 적용 가능.
연산프로퍼티는 상속받았을 때에만 프로퍼티 재정의를 통해 프로퍼티 감시자를 사용.
프로퍼티 감시자의 종류
willSet 메서드 : 프로퍼티의 값이 변경되기 직전에 호출
didSet 메서드: 프로퍼티의 값이 변경된 직후에 호출
willSet 메서드와 didSet 메서드에는 매개변수가 하나씩 있다.
willSet메서드에 전달되는 전달인자: 프로퍼티가 변경될 값
didSet메서드에 전달되는 전달인자: 프로퍼티가 변경되기 전의 값
그래서 매개변수의 이름을 따로 지정하지 않으면 willSet 메서드에는 newValue가, didSet메서드에는 oldValue 이름이 자동 지정됨.
newValue 또는 oldValue 대신 다른 이름 사용하고 싶다면, willSet(newValueName)이나 didSet(oldValueName)같이 willSet이나 didSet 다음에 소괄호로 감싼 이름 적으면 된다.
10.1.6. 타입 프로퍼티
:각각의 인스턴스가 아닌 타입 자체에 속하는 프로퍼티
타입 자체에 영향을 미치는 프로퍼티.
인스턴스 생성 여부와 상관없이 타입 프로퍼티의 값은 하나.
모든 인스턴스에서 공용으로 접근하고 값을 변경할 수 있는 변수 등을 정의할 때 유용.
타입 프로퍼티 : 2가지.
저장 타입 프로퍼티 = 변수 or 상수로 선언할 수 있다.
연산 타입 프로퍼티 = 변수로만 선언할 수 있다.
저장 타입 프로퍼티는 반드시 초깃값을 설정해야 하며 지연 연산된다.
지연 저장 프로퍼티와는 조금 다르게 다중 스레드 환경이라고 하더라도 단 한 번만 초기화되는 보장을 받는다.
지연연산된다고 해서 lazy키워드를 쓰지는 않는다.
출처: 야곰 swift 문법책
'iOS > iOS Swift 문법' 카테고리의 다른 글
iOS swift) if 구문에서 마지막 else, else if 생략 가능. (0) | 2022.08.31 |
---|---|
if - let, guard - let (0) | 2022.08.30 |
iOS swift 함수 (0) | 2022.07.17 |
iOS swift 흐름제어 (0) | 2022.07.16 |
iOS swift 연산자 (0) | 2022.07.14 |