property observer 사용 시 initialization에서 감지하고 싶을 때…

1 답변 글타래를 보이고 있습니다
  • 글쓴이
    • nobleidea
      참가자
      • 글작성 : 5
      • 답글작성 : 8

      안녕하세요 고귀한생각을 가진 개발자 nobleidea입니다.

      오랜만에… 개인프로젝트를 구현해보다가 궁금증이 생겨 이것저것 해보다 알게된 내용입니다.
      클래스를 생성할 때 프로퍼티에 임의의 값을 할당하게 되면
      프로퍼티 감시자를 통하여 일련의 로직을 수행하는 게 가능할까라는
      의문점으로 구현해보았습니다.

      프로퍼티 감시자는 initializtion에서는 호출되지 않습니다.
      (property observers didSet and willSet are not called during value initialization.)

      따라서 감시자가 호출될 수 있도록 함수를 만들거나
      defer를 사용하여 감시자를 호출할 수 있습니다.

      또는 클로저를 이용하여 호출할 수 있습니다.(함수도 클로저의 일부분이니깐요..)

      class SomeClass {
          var someProperty: AnyObject! {
              didSet {
                  //do some Stuff
              }
          }
      
      init(someProperty: AnyObject) {
        setSomeProperty(someProperty)
      }
      
      func setSomeProperty(newValue:AnyObject) {
            self.someProperty = newValue
          }
      }
      
      class SomeClass {
          var someProperty: AnyObject! {
              didSet {
                  //do some Stuff
              }
          }
          init(someProperty: AnyObject) {
             defer{
                self.someProperty = someProperty
             }
          }
      }
      
      • 이 게시글은 nobleidea에 의해 2 years, 9 months 전에 수정됐습니다.
      • 이 게시글은 nobleidea에 의해 2 years, 9 months 전에 수정됐습니다.
      • 이 게시글은 nobleidea에 의해 2 years, 9 months 전에 수정됐습니다.
      • 이 게시글은 nobleidea에 의해 2 years, 9 months 전에 수정됐습니다. 이유: 마크다운 어렵네요 ㅠ
    • 야곰
      키 마스터
      • 글작성 : 37
      • 답글작성 : 556

      이니셜라이저가 하나라면 메서드를 활용하는 것보다 defer를 활용하는 것이 더 나아 보이긴 합니다만, 임의의 값을 할당한다는 것이 프로퍼티에 random 값을 준다는 것이 아니고 직접 값을 할당하고 싶다는 말씀이셨던거죠?
      호옹… 그런 경우가 어떤 경우였나요? 궁금하네요 ㅎㅎ

      avatar
1 답변 글타래를 보이고 있습니다
  • 답변은 로그인 후 가능합니다.

logo landscape small

사업자번호 : 260-27-00477
통신판매업 신고번호 : 제 2020-충북청주-0663 호
고객센터 : 카카오톡채널 @yagom