내배캠 사전캠프/내배캠 사전캠프 TIL

241008 내배캠 사전캠프 TIL

yjuni22 2024. 10. 8. 23:08

내배캠 과제

은행 계좌 관리 시스템 구축하기

 

프로퍼티 옵저버 (속성감시자)


  • didSet: 프로퍼티를 관찰(observe)하면서 새 값이 저장된 직후에 호출되며 이전 프로퍼티의 값을 oldValue로 제공됩니다.
  • willSet: 프로퍼티를 관찰하면서 값이 새 값이 저장되기 직전에 호출되며 새로운 프로퍼티의 값을 newValue로 제공합니다.
var myProperty: Int = 20{
   didSet(oldValue){
      print(oldValue) 
   }
   willSet(newValue){
      print(newValue) 
   }
}

var name: String = "Unknown" {
    willSet {
        print("현재 이름 = \(name), 바뀔 이름 = \(newValue)")
    }
    didSet {
        print("현재 이름 = \(name), 바뀌기 전 이름 = \(oldValue)")
    }
}
 
name = "Peter"
// willSet이 먼저 실행
// 현재 이름 = Unknown, 바뀔 이름 = Peter
// 현재 이름 = Peter, 바뀌기 전 이름 = Unknown

 

- 저장속성 자체는 var로만 선언 가능

- 자료형을 선언하는 것은 일반 변수와 동일

- 저장 속성 변화시점을 관찰하는 실질적 메서드(타입/인스턴스 둘다 가능은 )

- willSet 또는 didSet 중에서 한가지만 구현 하면됨

- 변수가 변하면, (무엇인가) 업데이트 하려는 패턴 구현할때 사용

접근 제한자 (접근제어자)


  • 다른 소스 파일이나 모듈의 코드에서 코드 일부에 대한 접근을 제한하는 키워드
  • [제약이 적음] open < public < internal < fileprivate < private [제약이 많음]
  • private(set)으로 프로퍼티를 외부에서 수정 불가능한 읽기 전용 모드를 만들 수 있습니다.
  • 접근 제한자를 작성하지 않으면 기본적으로 internal로 판단합니다.
  • 상위 요소보다 하위 요소가 더 높은 접근 수준을 가질 수 없습니다.