Swift构造器(Initializer)与析构器(Deinitializer)
为了初始化结构体和类等类型的实例属性。
默认构造器
- 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构造器(Initializer)与析构器(Deinitializer)的更多相关文章
- Swift中子类必须包含的构造器和析构器
		
import Foundation /* Swift中子类必须包含的构造器 1.Swift允许在父类构造器前添加required关键字, 用于声明所有子类必须包含该required构造器 (如果没有声 ...
 - Swift 析构器deinit
		
析构器只适用于类类型,当一个类的实例被释放之前,析构器会被立即调用.析构器用关键字deinit来标识,类似于构造器用init来标识. 原理: Swift会自动释放不再需要的实例以释放资源.Swift通 ...
 - swift 学习- 17 -- 析构器
		
// 析构器 只适用与 类类型, 当一个类的实例被释放之前, 析构器会被立即调用, 析构器用关键字 deinit 来标示, 类似于构造器要用 init 来标示 // 析构过程原理 // Swift 会 ...
 - Python构造器及析构器:__init__与__new__及__del__
		
__init__与__new__这两个魔法方法组成了Python类对象的构造器,在Python类实例化时,其实最先调用的不是__init__而是__new__.__new__是负责实例化对象的,而__ ...
 - swift学习笔记之-析构过程
		
//析构过程deist import UIKit /*析构过程(Deinitialization):析构器只适用于类类型,当一个类的实例被释放之前,析构器会被立即调用.析构器用关键字deinit来标示 ...
 - objective-C学习笔记(五)函数成员:初始化器和析构器
		
初始化器:init 对象初始化器: -(id)init 可以重载多个. 类型初始化器: +(id)initialize只能有一个. 对象初始化器: 初始化对象实例时,init通常和alloc(手动内存 ...
 - 一段程序的分析——C++析构器,何时析构
		
最近在看小甲鱼的视频,有段程序是这么写的: #include <iostream> #include <string> class Pet { public: Pet(std: ...
 - 【iOS】Swift类的继承、构造方法、析构器等复习
		
一.继承与重写, 防止重写 1.1 基类, 不继承任何类. Swift不想OC或者Java中继承自Object类.定义一个类,不继承任何类,该类就是基类. [java] view plaincopy ...
 - Swift的构造和析构过程
		
构造过程 Swift的构造过程通过定义构造器来实现. 只是与Objective-C不同的是,Swift的构造器不须要返回值,相同也不须要表明Func. 另外值得提的是,当构造器中为存储型属性赋值时.不 ...
 
随机推荐
- 安装centreon
			
Centreon + nagios + ndoutils 安装 2013-09-25 19:42:44 标签:centreon 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者 ...
 - C# 解压RAR压缩文件
			
此方法适用于C盘windows文件夹中有WinRAR.exe文件 /// 解压文件(不带密码) RAR压缩程序 返回解压出来的文件数量 /// </summary> /// <par ...
 - C语言signal处理的小例子
			
[pgsql@localhost tst]$ cat sig01.c #include <stdio.h> #include <signal.h> static void tr ...
 - Spring连接数据库的几种常用的方式
			
本文简单的讲解使用Spring连接数据库的几种常用方法: 测试主类为: package myspring2; import java.sql.*; import javax.sql.DataSourc ...
 - char数组与char指针
			
1.以字符串形式出现的,编译器会在结尾自动添加\0,思考,为什么? 存在的C语言方法,如strlen(s),计算字符串的长度,其中s指针.strlen要计算字符串长度,必须知道哪里是结尾,因此使用\0 ...
 - 不可不表的OSG智能指针之强指针与弱指针 《转载》
			
不可不表的OSG智能指针之强指针与弱指针 <转载> 使用OSG的人都知道OSG的内存管理方式采用了智能指针,通过智能指针的方式让OSG自己处理对象的销毁工作.在OSG中有两个智能指针类型, ...
 - CSS3/jQuery自己定义弹出窗体
			
简单演示一下,精简了演示效果和css样式文件,更利于在项目中的实际应用 引入style.css index.js <!DOCTYPE HTML PUBLIC "-//W3C//DT ...
 - [Javascript] Function scope
			
We have code like: var numbers = [1,2,3]; for(var i in numbers){ setTimeout(function(){console.log(n ...
 - iOS修改声明为readonly的属性值
			
本文讨论的是,对于类中声明为 readonly 的属性值,我们就不可以修改其值了么?如何可以,那么如何修改呢? 为了便于说明,定义一个 ACLStudent 的类: ACLStudent.h @int ...
 - ios开发——实用技术篇&Pist转模型详细介绍
			
Pist转模型详细介绍 关于Plist转模型在iOS开发中是非常常见的,每开一一个项目或者实现一个功能都要用到它,所以今天就给大家讲讲Plist怎么转成模型数据, 前提:必须有一个Plist文件或者通 ...