본문 바로가기
iOS_Swift/문법 정리

Swift - 클래스 init 메서드, self

by chozjjae 2022. 2. 7.

init메서드를 사용하여 인스턴스를 초기화 하는 방법을 알아보겠습니다.

class의 용어정리 - https://chozjjae.tistory.com/43

class의 property와 method정리 - https://chozjjae.tistory.com/44  

class의 instance 생성 후 프로퍼티와 메서드 접근 - https://chozjjae.tistory.com/45


init 이란 ?

인스턴스를 초기화 하는 두번째 방법으로 인스턴스가 생성되는 시점에서 해야할 초기화 작업입니다.

init 메서드 = 생성자

init ( ) = {        }

class hap{
    var x : Int = 10
    var y : Int = 20
    init(sqx : Int, sqy: Int){
        x = sqx
        y = sqy
    } //designated initializer
    
    func math(){
        print("값1 = \(x), 값2 = \(y)")
    }
}

var cho : hap = hap(sqx:50,sqy:60)
cho.math() // 값1 = 50, 값2 = 60

 

init 메서드에 새로운 이름과 자료형으로 생성 후 

인스턴스에서 불러올때 넣어줄 값을 [var cho : hap = hap(sqx:50,sqy:60)] 넣어준다면 초기값이 아닌 초기화 된 값을 불러오게 됩니다.

*위와같이 init 메서드를 사용해준다면 초기값을 작성해 주지 않아도 오류가 발생하지 않습니다.

 

designated initializer - 모든 프로퍼티 (x, y)를 다 초기화 시키는 생성자를 의미합니다.

소멸자 - 인스턴스가 사라질 때 자동으로 호출됩니다. // deinit{ }


init 메서드 속 self 사용

self는 init 메서드 안에서 프로퍼티와 같은 이름을 사용해줄때 구분하기 위해 사용합니다.

class hap{
    var x : Int = 10
    var y : Int = 20
    init(x : Int, y: Int){
        self.x = x
        self.y = y
    }
    func math(){
        print("값1 = \(x), 값2 = \(y)")
    }
}

var cho : hap = hap(x:50,y:60)
cho.math() // 값1 = 50, 값2 = 60

*self의 내용과 init의 내용을 구별하기 쉽게 색상을 입혀보겠습니다.

class hap{
    var x : Int = 10
    var y : Int = 20
    init(x : Int, y: Int){
        self.x = x
        self.y = y
    }
    func math(){
        print("값1 = \(x), 값2 = \(y)")
    }
}

var cho : hap = hap(x:50,y:60)
cho.math() // 값1 = 50, 값2 = 60


참고영상 :

https://www.youtube.com/watch?v=4MPMtkxwS24&list=PLJqaIeuL7nuEEROQDRcy4XxC9gU6SYYXb&index=25 

https://www.youtube.com/watch?v=MGiQK77PT30&list=PLJqaIeuL7nuEEROQDRcy4XxC9gU6SYYXb&index=26