실패가능한 생성자 - TIL35

future0159 2월 3일 PM 08:45 4 1
future0159 Profile Image Level 9
1

실패 가능한 intializer

class Person{
    var name: String
    var age: Int
    var nickName: String?
    
    init?(name: String, age: Int){
        if(0...120).contains(age) == false {
            return nil
        }
        if name.count == 0 {
            return nil
        }
        self.name = name
        self.age = age
    }
}

전달되는 값들이 정상 범주를 넘어가거나 원하는 값의 범위가 아니라면 실패 가능한 Initializer를 설정할수있다. 이때 initialize에서 nil을 return 하는것이 가능함. 이때 실패가능한 initializer라 옵셔널로 오기 때문에 당연히 타입또한 class optional로 해줘야 fail이 나지 않음. 암시적 추출 옵셔널인 !인 경우 프로퍼티가 꼭 필요한 경우 !를 찍어주는데, 초기화할 때 전달되기 어려운 값들은 이름만 받아들인 뒤, 나중에 세팅하겠다는 것이 암시적 추출방식이다.

deinitializer

deinitializer는 매개변수를 가질수 없는데 이들은 클래스의 인스턴스가 메모리 해제되는 시점에 호출되며, 클래스 타입에만 구현해줄수 있다.



댓글