프로퍼티 옵저버 메서드 수행중 값 접근할 때 질문

1 답변 글타래를 보이고 있습니다
  • 글쓴이
    • mi kim
      참가자
      • 글작성 : 10
      • 답글작성 : 8
      class Test {
          var arr = [false, true, true, false, true, false, false] {
          willSet(new) {
          print("before: (arr)")
          }
          didSet(old) {
          print("now: (arr)")
      
          self.arr.sort{ $0 == false && $1 == true }
          // 값 갱신마다 false를 앞으로 전부 나오게 정렬
          // 예:
          // false, true, true, false, true, false, false
          // false, false, false, false, true, true, true
          print("sorted: (arr)")
         }
        }
      }
      
      let test = Test() // 생성
      
      test.arr.append(true) // #1 새로운 값을 추가
      print(test.arr) // #2 arr에 값 접근 <-- 질문 위치
      
      

       

      위 코드처럼, 프로퍼티 옵저버의 didSet 메서드에 정렬 기능을 구현했습니다.

      그리고 print(test.arr)로 그 프로퍼티 옵저버의 값을 참조하고 있습니다.

      여기서 질문입니다.

      1. 만약 데이터가 커서 정렬 수행이 오래걸리게 된다면, didSet직후 참조하게 된다면 오류가 발생하지 않을까요?
      2. 프로퍼티 옵저버는 해당 didSet, willSet이 끝날까지 외부에서의 참조가 미루어지는 동기구조인가요?

       

      • 이 게시글은 mi kim에 의해 3 years, 2 months 전에 수정됐습니다.
      • 이 게시글은 mi kim에 의해 3 years, 2 months 전에 수정됐습니다.
      • 이 게시글은 mi kim에 의해 3 years, 2 months 전에 수정됐습니다.
      • 이 게시글은 mi kim에 의해 3 years, 2 months 전에 수정됐습니다.
      • 이 게시글은 mi kim에 의해 3 years, 2 months 전에 수정됐습니다.
    • 야곰
      키 마스터
      • 글작성 : 37
      • 답글작성 : 580

      좋은 질문이네요 🙂
      [이 글]을 참고해보면 도움이 되지 않을까합니다.

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

logo landscape small

사업자번호 : 743-81-02195
통신판매업 신고번호 : 제 2022-충북청주-1278 호
고객센터 : 카카오톡채널 @yagom