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

简介: <div><p><span style="font-size:14px;">为了初始化结构体和类等类型的实例属性。</span></p><p><span style="font-size:14px;">默认构造器</span></p><p><span style="font-size:14px;"></span></p><pre name="code" class="html">str

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

默认构造器

struct Fahrenheit {
var temperature: Doubleinit(){
temperature = 32.0
} 
} 

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

println("The default temperature   is \(f.temperature)°Fahrenheit")
// prints "The default temperature is 32.0° Fahrenheit"

自定义构造器

 

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

 

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,语法如下:

deinit {
// perform thedeinitialization
}


实例:

 

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



目录
相关文章
|
存储 安全 Swift
Swift5.1—指定构造器和便利构造器
Swift5.1—指定构造器和便利构造器
548 0
Swift5.1—指定构造器和便利构造器
Swift5.1—必要构造器
Swift5.1—必要构造器
122 0
|
安全
Swift5.1—构造器的自动继承
Swift5.1—构造器的自动继承
182 0
|
Swift iOS开发
Swift里的类继承,构造和析构代码
敲敲打打, 每天差不多一个小时来学这个, 相信到时候再用XCODE,感觉会熟悉很多。。
1337 0
|
存储 数据库 Swift
Swift构造器重载
<span style="font-size:14px;">与函数一样,方法也存在重载,其重载的方式与函数一致。那么作为构造器的特殊方法,是否也存在重载呢?答案是肯定的。<br>一、构造器重载概念<br>Swift中函数重载的条件也适用于构造器,条件如下:<br>函数有相同的名字;<br>参数列表不同或返回值类型不同,或外部参数名不同;<br>Swift中的构造器可以满足以下两个条件,代码如下
1095 0
|
4月前
|
Unix 调度 Swift
苹果iOS新手开发之Swift 中获取时间戳有哪些方式?
在Swift中获取时间戳有四种常见方式:1) 使用`Date`对象获取秒级或毫秒级时间戳;2) 通过`CFAbsoluteTimeGetCurrent`获取Core Foundation的秒数,需转换为Unix时间戳;3) 使用`DispatchTime.now()`获取纳秒级精度的调度时间点;4) `ProcessInfo`提供设备启动后的秒数,不表示绝对时间。不同方法适用于不同的精度和场景需求。
156 3
|
8天前
|
安全 Swift iOS开发
Swift 与 UIKit 在 iOS 应用界面开发中的关键技术和实践方法
本文深入探讨了 Swift 与 UIKit 在 iOS 应用界面开发中的关键技术和实践方法。Swift 以其简洁、高效和类型安全的特点,结合 UIKit 丰富的组件和功能,为开发者提供了强大的工具。文章从 Swift 的语法优势、类型安全、编程模型以及与 UIKit 的集成,到 UIKit 的主要组件和功能,再到构建界面的实践技巧和实际案例分析,全面介绍了如何利用这些技术创建高质量的用户界面。
17 2
|
24天前
|
Swift iOS开发 UED
如何使用Swift和UIKit在iOS应用中实现自定义按钮动画
本文通过一个具体案例,介绍如何使用Swift和UIKit在iOS应用中实现自定义按钮动画。当用户点击按钮时,按钮将从圆形变为椭圆形,颜色从蓝色渐变到绿色;释放按钮时,动画以相反方式恢复。通过UIView的动画方法和弹簧动画效果,实现平滑自然的过渡。
45 1
|
1月前
|
Swift iOS开发 UED
如何使用Swift和UIKit在iOS应用中实现自定义按钮动画
【10月更文挑战第18天】本文通过一个具体案例,介绍如何使用Swift和UIKit在iOS应用中实现自定义按钮动画。当用户按下按钮时,按钮将从圆形变为椭圆形并从蓝色渐变为绿色;释放按钮时,动画恢复原状。通过UIView的动画方法和弹簧动画效果,实现平滑自然的动画过渡。
50 5