반응형
클래스를 사용할 때 생성자와 소멸자는 많이 사용됩니다.
// 인스턴스의 생성과 소멸
// 생성자와 소멸자 인듯하다.
// 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 |