首页 > 代码库 > Swift构造器(Initializer)与析构器(Deinitializer)

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

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

默认构造器

 

[html] view plaincopy
 
  1. struct Fahrenheit {  
  2. var temperature: Doubleinit(){  
  3. temperature = 32.0  
  4. }   
  5. }   

 

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

 

[html] view plaincopy
 
  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. coinsInPurse= coins   
  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