init
를 사용하는데 디이니셜라이저는 선언을 위해 deinit
키워드를 사용합니다. 디이니셜라이저는 오직 클래스 타입에서만 사용 가능합니다.coinsInBank
코인을 배포하는 distribute
메소드와 코인을 받는 receive
메소드를 선언했습니다. distribute
메소드에서는 현재 은행에 남은 코인수를 확인해 요청한 코인수와 비교해 더 작은 것을 반환합니다. 만약 은행에 남은 코인이 0이라면 요청한 코인 대신 0을 반환합니다. receive
메소드는 코인을 받아 은행에 추가하는 메소드입니다. 이 코인을 활용해 게임은 한다고 가정해 봅시다. 사용자는 게임을 하는데 처음에 일정 코인을 은행으로 부터 받고 시작하고, 게임에서 이길 때마다 은행에서 코인을 받아 사용자의 지갑에 저장합니다.deinit
안에 Bank.receive(coins: coinsInPurse)
코드를 넣어 사용했던 돈은 모두 은행에 다시 반환하도록 했습니다. 자 게임을 시작해보죠.playerOne = nil
이라는 것은 더 이상 이 인스턴스를 사용하지 않는다는 것입니다. 그래서 앞의 디이니셜라이저(deinit)이 실행돼 그곳에 선언한 지갑에 있는 돈을 은행에 반납하는 코드가 실행돼 은행은 다시 처음에 갖고 있던 10000 코인을 갖게 됩니다.