iOS/Swift

[Swift] 클래스의 생성자와 소멸자

유훈 | Yuhun 2022. 1. 24. 15:43
반응형

클래스를 사용할 때 생성자와 소멸자는 많이 사용됩니다.

// 인스턴스의 생성과 소멸
// 생성자와 소멸자 인듯하다.
// constructor -> init

class Person {
    var name: String
    var age: Int
    var nickName: String? // 만약 require한 값이 아니라면 ?로 옵셔널 줄 수 있다.
    // var nickName: String?
    
    // 생성자
    init (name: String, age:Int, nickName: String) {
        // 아래 생성자와 중복되는 부분이 있음으로 다음 주석과 같이 변경 가능
        // 단, 자신의 init을 쓰려면 앞에 convenience를 붙여야 한다.
        // self.init(name: name, age: age)
        self.name = name
        self.age = age
        self.nickName = nickName
    }
    
    init (name: String, age:Int) {
        self.name = name
        self.age = age
//        self.nickName = nickName // niclName이 옵셔널임으로 이렇게 구분
    }
}

let exPerson = Person(name: "exName", age: 20, nickName: "exNickname")

exPerson.name
exPerson.age
exPerson.nickName

// 실패 가능한 생성자 (유효성 검사라고 보면 될 듯 하다.)

class PersonB {
    var name: String
    var age: Int
    var nickName: String?
    
    // 조건에 맞지 않으면 인스턴스가 아니라 nil을 반환
    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
    }
    
    // 소멸자
    deinit {
        // 인스턴스가 소멸할 때 실행되는 코드
        // 즉 인스턴스 이름 = nil로 메모리에서 해제될 때 실행
    }
    
}

출처 : 야곰 스위프트 기본 문법 강좌

반응형

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

[Swift] assert 와 guard  (0) 2022.01.25
[Swfit] 옵셔널 체이닝  (0) 2022.01.24
[Swift] 클래스의 상속  (0) 2022.01.24
[Swift] 클로저  (0) 2022.01.23
[Swift] 열거형  (0) 2022.01.23