현제의 현재이야기

[swift] 기초 문법 9일차 본문

IOS/swift

[swift] 기초 문법 9일차

현재의 현제 2022. 9. 16. 16:43

class Soldier{
    let name: String
    var hp: Int
    var needMoney : Int?
    init?(name: String, hp: Int) {
        if hp > 50000 {
            return nil
        }
        if name.count <= 0 {
            return nil
        }
        self.name = name
        self.hp = hp
    }
}
let genzi: Soldier? = Soldier(name: "genzi", hp: 560000)

if let genzi = genzi {
    print(genzi.name)
} else {
    print("초기화하지 못했습니다.")
}
//초기화하지 못했습니다.

init? 을 이용하면 조건에 따라서 nil을 반환하는 초기화를 만들 수 있다.

 

class PersonE {
    var name: String
    var pet: Puppy?
    var child: PersonC
    init(name: String, child: PersonC) {
        self.name = name
        self.child = child
    }
    // 인스턴스가 메모리에서 해제되는 시점에 자동 호출
    deinit {
        if let petName = pet?.name {
            print("\(name)가 \(child.name)에게 \(petName)를 인도합니다")
            self.pet?.owner = child
        }
    }
}
var donald: PersonE? = PersonE(name: "donald", child: jenny)
donald?.pet = happy
donald = nil

디이니셜 라이즌데, 메모리에서 해체되면 발생된다.

 

오늘은 여기까쥐... 

'IOS > swift' 카테고리의 다른 글

[swift] 기초 문법 8일차(상속)  (0) 2022.09.15
[swift] 기초 문법 7일차(프로퍼티)  (0) 2022.09.14
[swift] 기초 문법 6일차(클로저)  (0) 2022.09.13
[swift] 기초 문법 5일차  (0) 2022.09.12
[swift] 기초 문법 4일차  (0) 2022.09.11
Comments