ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Swift Property - 3
    Programming/Swift(iOS) 2021. 4. 1. 23:42
    728x90

    프로퍼티에는 감시자라는게 있습니다.

     

    값이 변경될 때, 특정 행동들을 수행하도록 만들 수 있습니다.

     

    저장 프로퍼티에 한해서만 사용을 할 수 있고, willSet / didSet이 있습니다.

    - willSet

       값이 변경되지 직전에 호출
       속성이 변경될 것이라는 것을 외부에 알릴때 많이 사용

     

    -didSet

       값 변경 후에 호출 된다.

       값의 변경 이후에 추가적으로 수행해야되는 작업이 있을 경우

     

    이와는 별도로 defer block도 있습니다.

    함수가 끝나고 난 이후에 무조건 실행되는 block입니다... 

    struct User {
        var email:String {
            didSet {
            	//만약 emil의 주소가 올바른지 체크하고 싶다..
                //예를 들어 이메일의 입력이 ".      hello@gmail.com      "이다..
                //공백 제거하는 방법을 email에 값이 변경된 후에 다시 한번 처리하는 것이다.
                //email = email.lowercased().trimmingCharacters(in:.whitespaces)
                print("didSet \(oldValue)")
            }
            willSet {
                print("willSet \(newValue)")
                isChanged = true
                
            }
        }
        var isChanged:Bool = false
        
        init(email:String) {
            print("init begin")
            self.email = email
            //defer: 함수가 종료된 이후에 호출되는 블록을 지정합니다. 함수의 마지막에 수행되어야하는 정리코드를 캠슐화하는 목적으로 사용한다.
            //swift의 공식 솔루션은 아니다. 하지만 많은 개발자들이 많이 사용하는 방법은 defer이다. 
            defer {
                print("defer")
            }
            
            print("init end")
            
        }
    }

     

    'Programming > Swift(iOS)' 카테고리의 다른 글

    Swift Optional - 2  (0) 2021.04.02
    Swift Optional - 1  (0) 2021.04.02
    Swift Property - 2  (0) 2021.04.01
    Swift Property - 1  (0) 2021.04.01
    Swift Enum - 4  (0) 2021.04.01
Designed by Tistory.