질문
Apple의 문서는 다음을 지정합니다.
속성이 처음 초기화 될 때 willSet 및 didSet 옵저버가 호출되지 않습니다. 속성 값이 초기화 컨텍스트 외부에서 설정된 경우에만 호출됩니다.
초기화 중에 이들을 강제로 호출 할 수 있습니까?
왜?
이 수업이 있다고 가정 해 봅시다
class SomeClass {
var someProperty: AnyObject {
didSet {
doStuff()
}
}
init(someProperty: AnyObject) {
self.someProperty = someProperty
doStuff()
}
func doStuff() {
// do stuff now that someProperty is set
}
}
doStuff
처리 호출을보다 간결하게하기 위해 메소드 를 만들었지 만 오히려 didSet
함수 내에서 속성을 처리하려고 합니다. 초기화 중에 이것을 강제로 호출하는 방법이 있습니까?
최신 정보
내 클래스의 편의 초기화 도구를 제거하고 초기화 후에 속성을 설정하도록 결정했습니다. 이를 통해 didSet
항상 부름을받을 수 있습니다. 이것이 전체적으로 더 좋은지 결정하지는 않았지만 내 상황에 잘 맞습니다.
defer
.convenience init(someProperty: AnyObject) { self.init() defer { self.someProperty = someProperty }