본문 바로가기

Swift

Swift 정리 : 인스턴스 초기화 init() / Self

클래스, 구조체, 열거형(enum) 인스턴스가 생성되는 시점에서 해야 할 초기화 작업

인스턴스가 만들어지면서 자동 호출됨

init 메서드(생성자)

            init() {

            }

designated initializer

-      모든 프로퍼티(age, weight)를 다 초기화시키는 생성자

init()을 하나라도 직접 만들면 기본적으로 만들어지는 눈에 안보이는 default initializer는 사라짐

소멸자

-인스턴스가 사라질 때 자동 호출

-deinit{}

class Man{

        var age : Int  //init() 있기 때문에 초기값 생략 가능

        var weight : Double  //init 호출 되면서 값이 초기화됨

  func display() {    //인스턴스 메소드, 앞에 아무것도 붙지 않음

    print("나이=\(age), 몸무게=\(weight)")

  }

  init(yourAge: Int, yourWeight : Double){

        age = yourAge

        weight = yourWeight

  } //designated initializer

} 

//var lee : Man = Man()  //오류

//init() 하나라도 직접 만들면 default initializer 사라짐

var lee : Man = Man(yourAge:23, yourWeight:95)

lee.display() //나이-23, 몸무게=95.0

 

 

init() 안에 변수명을 같게 할 경우 self를 사용

현재 클래스 내 메서드나 프로퍼티를 가리킬 때 메서드나 프로퍼티 앞에 self.을 붙임

class Man{
var age : Int //init()이 있기 때문에 초기값 생략 가능
var weight : Double //init이 호출 되면서 값이 초기화됨
func display() { //인스턴스 메소드, 앞에 아무것도 붙지 않음
print("나이=\(age), 몸무게=\(weight)")
}
init(age: Int, weight : Double){
self.age = age
self.weight = weight
} //designated initializer
}
//var lee : Man = Man() //오류
//init()을 하나라도 직접 만들면 default initializer는 사라짐
var lee : Man = Man(age:23, weight:95)
lee.display() //나이-23, 몸무게=95.0