首页 > 代码库 > Swift构造器(Initializer)与析构器(Deinitializer)
Swift构造器(Initializer)与析构器(Deinitializer)
为了初始化结构体和类等类型的实例属性。
默认构造器
[html] view plaincopy
- struct Fahrenheit {
- var temperature: Doubleinit(){
- temperature = 32.0
- }
- }
var f = Fahrenheit() //调用默认构造器 init() ,没有参数 没有返回值。
[html] view plaincopy
- println("The default temperature is \(f.temperature)°Fahrenheit")
- // prints "The default temperature is 32.0° Fahrenheit"
自定义构造器
定义类两个构造器:init(fromFahrenheit:) 和init(fromKelvin:)
[html] view plaincopy
- struct Celsius {
- var temperatureInCelsius: Double = 0.0
- init(fromFahrenheit fahrenheit: Double) {
- temperatureInCelsius = (fahrenheit - 32.0)
- / 1.8
- }
- init(fromKelvin kelvin: Double) {
- temperatureInCelsius = kelvin -273.15
- }
- }
- let boilingPointOfWater = Celsius(fromFahrenheit:212.0)
- // boilingPointOfWater.temperatureInCelsius is 100.0
- let freezingPointOfWater =Celsius(fromKelvin:273.15)
- // freezingPointOfWater.temperatureInCelsius is 0.0
析构器(Deinitializer)
析构器与构造器相反,在对象释放时候调用。 使用关键字 deinit,语法如下:
[html] view plaincopy
- deinit {
- // perform thedeinitialization
- }
实例:
[html] view plaincopy
- class Player {
- var coinsInPurse:Int init(coins: Int) {
- println("call init")
- coinsInPurse= coins
- }
- func winCoins(coins: Int) {
- coinsInPurse+= 10
- }
- deinit {
- coinsInPurse = 0
- }
- }
- var playerOne: Player? = Player(coins: 100)
- println("coinsInPurse : \(playerOne!.coinsInPurse)
- coins")
- playerOne = nil
- println("PlayerOne has leftthe game")
Swift交流讨论论坛论坛:http://www.cocoagame.net
欢迎加入Swift技术交流群:362298485
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。