Swift构造器(Initializer)与析构器(Deinitializer)

为了初始化结构体和类等类型的实例属性。html

默认构造器spa

[html] view plaincopy.net

  1. struct Fahrenheit {  orm

  2. var temperature: Doubleinit(){  htm

  3. temperature = 32.0  对象

  4. }   blog

  5. }   get


var f = Fahrenheit() //调用默认构造器 init() ,没有参数 没有返回值。it

[html] view plaincopyio

  1. println("The default temperature   is \(f.temperature)°Fahrenheit")  

  2. // prints "The default temperature is 32.0° Fahrenheit"  


自定义构造器

 

 定义类两个构造器:init(fromFahrenheit:)  和init(fromKelvin:)

 

[html] view plaincopy

  1. struct Celsius {  

  2. var temperatureInCelsius: Double = 0.0  

  3.  init(fromFahrenheit fahrenheit: Double) {  

  4.  temperatureInCelsius = (fahrenheit - 32.0)  

  5. / 1.8  

  6.  }  

  7.  init(fromKelvin kelvin: Double) {  

  8.   temperatureInCelsius = kelvin -273.15  

  9.    }  

  10.  }  

  11.  let boilingPointOfWater = Celsius(fromFahrenheit:212.0)  

  12.  // boilingPointOfWater.temperatureInCelsius is 100.0  

  13.  let freezingPointOfWater =Celsius(fromKelvin:273.15)  

  14.  // freezingPointOfWater.temperatureInCelsius is 0.0  



析构器(Deinitializer)


析构器与构造器相反,在对象释放时候调用。 使用关键字 deinit,语法以下:

[html] view plaincopy

  1. deinit {  

  2. // perform thedeinitialization  

  3. }  



实例:

 

[html] view plaincopy

  1. class Player {  

  2.  var coinsInPurse:Int init(coins: Int) {  

  3. println("call init")  

  4. coinsInPursecoins   

  5. }  

  6. func winCoins(coins: Int) {  

  7. coinsInPurse+= 10  

  8. }  

  9. deinit {  

  10. coinsInPurse = 0  

  11. }  

  12. }  

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

  14.  println("coinsInPurse   :  \(playerOne!.coinsInPurse)  

  15.  coins")  

  16. playerOne = nil  

  17. println("PlayerOne has leftthe game")  



Swift交流讨论论坛论坛:http://www.cocoagame.net

欢迎加入Swift技术交流群:362298485

相关文章
相关标签/搜索