프로그램의 코드를 추상화 하기 위해 사용
property와 method를 이용해 구조화된 데이터와 기능을 가질 수 있음
클래스 구조체 또는 열거형의 인스턴스를 사용하기 위한 준비 과정
// init
/*
init(매개변수: 타입, ...) {
// 프로퍼티 초기화
// 인스턴스 생성시 필요한 설정을 해주는 코드 작성
}
*/
class Member {
var nickname:String
var age: Int
init(nickname: String, age: Int) {
self.nickname = nickname
self.age = age
}
init(age: Int){
self.nickname = "self"
self.age = age
}
// 인스턴스가 메모리에서 해제될 때 실행, !! 클래스에서만 가능
deinit {
print("deinit member")
}
}
var member = Member(nickname: "DK", age: 30)
member.nickname // "DK"
member.age // 30
var member2 = Member(age: 50) // Member
member2.nickname // "self"
member2.age = 50
// member를 메모리에서 해제시키는 과정, member3가 nil이 될수 있으므로 옵셔널 타입으로 지정
var member3: Member? = Member(age:23)
member3 = nil // In console : deinit member