Swift 类的初始化和反初始化
2015-11-12 22:24
423 查看
以下是一个swift 类的初始化和反初始化。
其中:
1. 在convenience init中一定要调用 init函数,也就是说无论如何调用,类生成的时候init()函数必定执行
2. 将类指向nil时会调用deinit 函数, 该函数可以在类完全消失前做一些操作,比如写入文件
3. 一个类中可以有多个 convenience init,调用方法是由声明函数变量名称决定
import Foundation
class Sample
{
var a:Int?
init()// this is the init function, set a =0, will execute ervery time
{
a = 0
print("class inited a value set to\(a)")
}
convenienceinit(b:Int)//First
convenience init function use a as variable, set the value to b
{
self.init()// this is needed
a = b
print("I wast inited by convenence init\(a)")
}
convenienceinit(c:Int)//
Second convenience init function, swift allow 2 init function have the same kind of variable
{
self.init()
a = c*10
print("I wast inited by convenence init\(a)")
}
deinit
{
print("class deinited, a value was:\(a);")
}
}
var samClass, samClass2:
Sample?
samClass =
Sample(b: 1)//print 0 (init), 1 (conveneince init)
samClass =
nil //print 1(deinit)
samClass2 =
Sample() //print 0(init)
samClass2 =
nil //print 0(deninit)
samClass =
Sample(c: 1)//print 0(init), 10(convenience init)
samClass =
nil //print 10(deinit)
其中:
1. 在convenience init中一定要调用 init函数,也就是说无论如何调用,类生成的时候init()函数必定执行
2. 将类指向nil时会调用deinit 函数, 该函数可以在类完全消失前做一些操作,比如写入文件
3. 一个类中可以有多个 convenience init,调用方法是由声明函数变量名称决定
import Foundation
class Sample
{
var a:Int?
init()// this is the init function, set a =0, will execute ervery time
{
a = 0
print("class inited a value set to\(a)")
}
convenienceinit(b:Int)//First
convenience init function use a as variable, set the value to b
{
self.init()// this is needed
a = b
print("I wast inited by convenence init\(a)")
}
convenienceinit(c:Int)//
Second convenience init function, swift allow 2 init function have the same kind of variable
{
self.init()
a = c*10
print("I wast inited by convenence init\(a)")
}
deinit
{
print("class deinited, a value was:\(a);")
}
}
var samClass, samClass2:
Sample?
samClass =
Sample(b: 1)//print 0 (init), 1 (conveneince init)
samClass =
nil //print 1(deinit)
samClass2 =
Sample() //print 0(init)
samClass2 =
nil //print 0(deninit)
samClass =
Sample(c: 1)//print 0(init), 10(convenience init)
samClass =
nil //print 10(deinit)
相关文章推荐
- Swift——Command failed due to signal: Segmentation fault: 11
- swift UIView实现可视化自定义组件
- swift UIView实现可视化自定义组件
- Swift(十九、类型转换&嵌套类型)
- ios swift UILabel 颜色使用图片
- swift存储策略实践
- oc自动转换成swift网址
- ios swift 在弹出框展示图片
- JPush删除别名及回调函数(SWIFT)
- swift之 元组
- swift之数值类型杂谈(数值)
- 我的简单swift爬虫类
- Swift 2.0初探
- swift中UIButton的简单使用
- Swift设计模式——Factory Pattern
- The Swift Pods being used are: Box, ReactiveCocoa, and Result
- Android中FTP服务器、客户端搭建以及SwiFTP、ftp4j介绍
- swift之声明常量和变量
- swift 快速奔跑的兔几 本节的内容是:向场景中添加物理仿真
- 关于oc的#pragma mark - 和swift的注释的详解和区别