관리 메뉴

김종권의 iOS 앱 개발 알아가기

[iOS - swift 공식 문서] 14. Deinitialization (인스턴스 해제 초기화) 본문

swift 공식 문서

[iOS - swift 공식 문서] 14. Deinitialization (인스턴스 해제 초기화)

jake-kim 2021. 7. 11. 00:02

Deinitialization

  • deinitializer는 클래스 인스턴스가 해제되기 직전에 호출되며 직접 호출 불가능
  • deinit 키워드
  • class type에서만 사용

deinit 

  • deinit이 호출될 때까지 instance 메모리가 해제되지 않기 때문에 deinit안에서 호출된 인스턴스의 모든 속성에 접근 가능

deinit 사용 예시

  • Player클래스는 게임에서 플레이어를 안내하고, 각 플레이어는 지갑에 일정 수의 동전을 보관하는 상태이고 이 동전은 coinsInPurse로 정의
  • 은행에서 coin의 허용량이 정해져있다면, 각 플레이어가 coin을 사용하고 게임이 끝난 경우 Bank에 coin을 반납하는 프로그램
class Player {
    var coinsInPurse: Int
    init(coins: Int) {
        coinsInPurse = Bank.distribute(coins: coins)
    }
    func win(coins: Int) {
        coinsInPurse += Bank.distribute(coins: coins)
    }
    deinit {
        Bank.receive(coins: coinsInPurse)
    }
}

* 참고

https://docs.swift.org/swift-book/LanguageGuide/Deinitialization.html

Comments