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

默认构造器

  1. struct Fahrenheit {
  2. var temperature: Doubleinit(){
  3. temperature = 32.0
  4. }
  5. }

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

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

自定义构造器

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

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

  1. deinit {
  2. // perform thedeinitialization
  3. }

实例:

  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

Swift构造器(Initializer)与析构器(Deinitializer)的更多相关文章

  1. Swift中子类必须包含的构造器和析构器

    import Foundation /* Swift中子类必须包含的构造器 1.Swift允许在父类构造器前添加required关键字, 用于声明所有子类必须包含该required构造器 (如果没有声 ...

  2. Swift 析构器deinit

    析构器只适用于类类型,当一个类的实例被释放之前,析构器会被立即调用.析构器用关键字deinit来标识,类似于构造器用init来标识. 原理: Swift会自动释放不再需要的实例以释放资源.Swift通 ...

  3. swift 学习- 17 -- 析构器

    // 析构器 只适用与 类类型, 当一个类的实例被释放之前, 析构器会被立即调用, 析构器用关键字 deinit 来标示, 类似于构造器要用 init 来标示 // 析构过程原理 // Swift 会 ...

  4. Python构造器及析构器:__init__与__new__及__del__

    __init__与__new__这两个魔法方法组成了Python类对象的构造器,在Python类实例化时,其实最先调用的不是__init__而是__new__.__new__是负责实例化对象的,而__ ...

  5. swift学习笔记之-析构过程

    //析构过程deist import UIKit /*析构过程(Deinitialization):析构器只适用于类类型,当一个类的实例被释放之前,析构器会被立即调用.析构器用关键字deinit来标示 ...

  6. objective-C学习笔记(五)函数成员:初始化器和析构器

    初始化器:init 对象初始化器: -(id)init 可以重载多个. 类型初始化器: +(id)initialize只能有一个. 对象初始化器: 初始化对象实例时,init通常和alloc(手动内存 ...

  7. 一段程序的分析——C++析构器,何时析构

    最近在看小甲鱼的视频,有段程序是这么写的: #include <iostream> #include <string> class Pet { public: Pet(std: ...

  8. 【iOS】Swift类的继承、构造方法、析构器等复习

    一.继承与重写, 防止重写 1.1 基类, 不继承任何类. Swift不想OC或者Java中继承自Object类.定义一个类,不继承任何类,该类就是基类. [java] view plaincopy ...

  9. Swift的构造和析构过程

    构造过程 Swift的构造过程通过定义构造器来实现. 只是与Objective-C不同的是,Swift的构造器不须要返回值,相同也不须要表明Func. 另外值得提的是,当构造器中为存储型属性赋值时.不 ...

随机推荐

  1. Codeforces Gym 100338C C - Important Roads tarjan

    C - Important RoadsTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contes ...

  2. CODEFORCE 246 Div.2 B题

    题目例如以下: B. Football Kit time limit per test 1 second memory limit per test 256 megabytes input stand ...

  3. Java中介者设计模式

    中介者设计模式是一种很常见的设计模式,当中我们最为熟悉的就是我们的MVC框架.当中的C作为控制器就是一个详细的中介者,它的作用是把业务逻辑(Model),和视图(Viwe)隔离开来.使M V协调工作, ...

  4. 日志文件 的管理 logrotate 配置

    于Linux 的系统安全来说,日志文件是极其重要的工具.系统管理员可以使用logrotate 程序用来管理系统中的最新的事件, 对于Linux 的系统安全来说,日志文件是极其重要的工具.系统管理员可以 ...

  5. 浅谈Linux的内存管理机制

    转至:http://ixdba.blog.51cto.com/2895551/541355 一 物理内存和虚拟内存          我们知道,直接从物理内存读写数据要比从硬盘读写数据要快的多,因此, ...

  6. Sublime Text 3 常用快捷键总结

    1.快速跳转到某一行:Ctrl+G,输入行号,可以快速跳转到该行 2.快速查找:Ctrl+P 输入"@函数名"可以快速查找到函数 输入"#+文本" 3.多行游标 ...

  7. Logback日志使用详解

    概述 Logback建立于三个主要类之上:日志记录器(Logger),输出端(Appender)和日志格式化器(Layout).这三种组件协同工作,使开发者可以按照消息类型和级别来记录消息,还可以在程 ...

  8. ISO8583报文解析

    在此只写了一个8583报文的拆包,组包其实也差不多的. 不多说直接上文件, 具体思路过程,在解析类里面写的有. 其中包含了四个文件 8583resp.txt报文 ISO8583medata配置文件 B ...

  9. Android(java)学习笔记110:ScrollView用法

    理论部分 1.ScrollView和HorizontalScrollView是为控件或者布局添加滚动条 2.上述两个控件只能有一个孩子,但是它并不是传统意义上的容器 3.上述两个控件可以互相嵌套 4. ...

  10. Android(java)学习笔记107-0:通过反射获得构造方法并且使用

    1.获取字节码文件对象:             Class c = Class.forName("cn.itcast_01.Person"); 2.获取构造方法         ...