Swift & iOS

[Swift] 초기화 구문 (init, deinit)

hammii 2022. 6. 15. 15:36
728x90
반응형

1. init

클래스, 구조체, 열거형의 인스턴스를 사용하기 위한 준비 과정이다.

아래와 같이 정의할 수 있다.

 init(매개변수: 타입, ...) {
    // 프로퍼티 초기화
    // 인스턴스 생성시 필요한 설정을 해주는 코드 작성
 }

 

2. deinit

deinit은 파라미터를 받을 수 없으며, 클래스 당 오직 하나만 선언할 수 있다.

deinit {
    // 인스턴스 소멸시 필요한 설정을 해주는 코드 작성
}
  • 인스턴스가 메모리에 해제되기 직전에 호출된다.
  • 클래스 인스턴스와 관련하여 원하는 정리 작업을 하는 역할을 한다.
  • 클래스 인스턴스에만 구현할 수 있다.
  • 스위프트는 인스턴스가 더이상 필요하지 않으면 메모리에서 자동 소멸시킨다.
  • nil을 넣으면 더 이상 필요 없다고 판단 후 메모리에서 지워버린다.

 

3. init과 deinit의 예시

class User {
    var nickname: String
    var age: Int
    
    init(nickname: String, age: Int) {
        self.nickname = nickname
        self.age = age
    }
    
    init(age: Int){
        self.nickname = "hammii"
        self.age = age
    }
    
    deinit {
        print("deinit user")
    }
}

var user = User(nickname: "hammii", age: 25)
var user2 = User(age: 25)

var user3: User? = User(age: 25)
user3 = nil	// Prints "deinit user"

 

 

출처: [패스트캠퍼스] 30개 프로젝트로 배우는 iOS 앱 개발 with Swift 초격차 패키지 Online.

 

728x90
반응형