`

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. 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

分享到:
评论

相关推荐

    Swift-init构造函数

    在Swift中,构造函数(也称为初始化器)负责设置新实例的初始状态,并确保所有必要的属性都被赋予了适当的值。理解并熟练掌握Swift的构造函数对于编写健壮且可维护的代码至关重要。 一、初始化器的类型 1. 默认...

    swift-init-generator, 使用 Swift 解析器生成初始化器的Xcode插件.zip

    swift-init-generator, 使用 Swift 解析器生成初始化器的Xcode插件 swift-init-generator使用 Swift 解析器生成初始值设定项在选择包含变量声明的行之后,运行扩展命令生成相应的初始化器。示例 安装下载应用程序...

    The swift programming language (Swift 5.0)

    在iOS开发中,Swift与Cocoa Touch框架紧密集成,让你可以充分利用UIKit库来构建用户界面。Swift还支持Apple的Playgrounds,这是一个交互式学习环境,允许开发者实时查看代码执行结果,大大加快了学习和调试的速度。 ...

    Swifter - 100 个 Swift 必备 Tips

    Swift 支持两种类型的初始化器:指定初始化器(Designated Initializer)和便捷初始化器(Convenience Initializer)。 #### 16. nil 值处理 Swift 引入了可选类型来处理值可能不存在的情况。了解如何优雅地处理 `...

    Swift中文官方教程

    Swift 通常使用初始化器(initializer)语法创建空数组和空字典。例如:let emptyArray = String[](); let emptyDictionary = Dictionary, Float>()。如果类型信息已知,则可以使用 [] 声明空数组。 Swift 语言的...

    swift tips

    Swift 中有三种类型的初始化器:指定初始化器(designated initializer)、便利初始化器(convenience initializer)和必需初始化器(required initializer)。其中: - **指定初始化器**:负责完成所有必要的初始...

    iOS Swift No.14 – 构造 6

    6.4 Overriding a Failable Initializer (重写一个失败构造器) 我们可以在一个子类里面重写父类的失败构造器,就像重写其他构造器那样,这样以来可以用子类的非失败构造器来重写父类里面的失败构造器。要想重写一个...

    swift 类 方法 入门 demo

    Swift还支持getter和setter方法来访问或设置属性,以及初始化器(Initializer)来初始化新创建的类实例。 四、实例化与继承 要创建类的实例,我们需要使用`init`关键字来定义初始化器,并通过`let`或`var`关键字...

    Demo-iOS-Swift快速入门-2022年02月25日

    6. 类和对象:Swift支持面向对象编程,包括类(class)、继承、初始化器(initializer)和属性(property)。 7. 协议与扩展:协议定义了一组要求,而扩展(extension)则允许为现有的类型添加功能,无需修改原始...

    libpng15,解决The type initializer for ‘Gdip’ threw an exception

    解决Anolis(龙蜥),解决System.TypeInitializationException: The type initializer for ‘Gdip’ threw an exception.

    Swift - Learn Swift by examples

    在“战舰游戏”的上下文中,本节探讨了如何为游戏中的类添加初始化器(Initializer)。初始化器负责为实例属性设置初始值,并确保对象处于适当的状态。 #### Type Methods, Guards and String Interpolation #####...

    Springboot Initializer

    内网中连接不上https://start.spring.io,搭建\https://start.spring.io一样的服务器。 initializr-service-0.7.0.BUILD-SNAPSHOT.jar

    initializer-list分析

    initializer-list分析

    swift-Xcode8SourceCode扩展用于生成SwiftInitializer

    SwiftInitializerGenerator 是一个专为Xcode 8设计的源代码扩展,它简化了Swift开发者创建初始化器(Initializer)的过程。这个扩展是针对那些在Swift编程中频繁遇到初始化多个实例变量时,想要快速生成初始化代码的...

    dry-initializer, 使用参数和选项构建类初始值设定项的DSL.zip

    dry-initializer, 使用参数和选项构建类初始值设定项的DSL 干初始值设定项 使用参数和选项构建类初始值设定项的DSL 。安装将此行添加到你的应用程序的Gemfile中:gem 'dry-initializer'然后执行:$ bundle

    嵌入式avr编译器工具链GCC支持lambda和initializer-list<T>

    `initializer_list`可以用于构造函数中,接收一组逗号分隔的初始值,如: ```cpp std::vector&lt;int&gt; vec = {1, 2, 3, 4, 5}; ``` 在上面的示例中,`vec`被初始化为包含5个整数的向量。此外,`std::initializer_list...

    ITClient-Swift-源码.rar

    - 初始化器(Initializer) - 属性(Property):计算属性、存储属性 - 方法(Method) - 下标(Subscript) - 协议遵循(Conformance to Protocols) - 泛型(Generics) 3. **Swift高级特性**: - 可选链...

    关于swift的个人小结

    这些只是Swift语言中的一部分精华,Swift还有许多其他特性,如类型系统、泛型、协议与扩展、解构、异步编程等,它们共同构建了Swift的强大功能和高效开发体验。不断学习和实践Swift,能够帮助开发者编写出更安全、更...

    C#与.NET技术平台实战演练.part2

    initializer10-5初始化只读数据10-6在构造器中使用out与ref10-7struct构造器10-7-1struct构造器的限制10-8static构造器10-8-1使用static构造器初始化静态成员10-8-2static构造器的限制10-9对象与内存10-9-l对象的...

Global site tag (gtag.js) - Google Analytics