构造器和析构器

一 构造器

swift的init方法是没有返回值的,而OC的init方法就有返回值,返回类本身

1.默认构造器

即使我们不写init方法,系统也会为函数默认写一个空的init方法

struct Fahrenheit {
    
    var temperature:Double
    
    init(){
        temperature = 32.0
    }
}

var f = Fahrenheit()

2.自定义构造器

struct Celsius {
    
    var temperature : Double
    
    init(fromFahrenheit fahrenheit:Double){
        temperature = (fahrenheit - 32.0)/1.8
    }
    
    init(fromKelvin kelvin:Double){
        temperature = kelvin - 273.15
    }
    
}

let boilingPointOfWater = Celsius(fromFahrenheit: 212.0)
let freezingPointOfWater = Celsius(fromKelvin: 273.15)


二 析构器

只存在与类中。当类可可选类型的时候,且为nil。deinit方法即会调用

class Player {
    
    var coinsInpurse:Int
    
    init(coins:Int){
        coinsInpurse = coins
    }
    
    func winCoins(coins:Int){
        coinsInpurse += 10
    }
    
    deinit{
        coinsInpurse = 0
    }
}

var playerOne:Player? = Player(coins: 100)

playerOne = nil


你可能感兴趣的:(构造器和析构器)