// create autho 周双建
// 《初始化和反初始化》
import Foundation
// 我们首先创建一个类
class DemoInitAndDeinit {
// 我们先介绍主的初始化器
init(){
print("I have be created!")
}
// 便捷的初始化,是调用上述初始化器必须的
convenience init (Str:@H_301_61@String){
self.init() // must be
print("I have be created with convenience !")
}
// 反初始化器
deinit{
print("Game Over")
}
}
//MARK:我们要小试牛刀
var FirstDemo:DemoInitAndDeinit?// 声明一个可变的量
//:我们声明一个类的时候,我们发现,只是声明而没有创建(var FirstDemo:DemoInitAndDeinit?)
// 主初始化器
FirstDemo = DemoInitAndDeinit()
//:我们是用主初始化器,创建对象的时候,发现对象已经被创建了(FirstDemo = DemoInitAndDeinit() 输出:I have be created!)
// 便捷初始化器
FirstDemo = DemoInitAndDeinit(Str:"ZSJ")
//:我们使用便捷式初始化的时候,我们发现,对象已经被创建了(FirstDemo = DemoInitAndDeinit(Str:"ZSJ") 输出:I have be created!I have be created with convenience !)
// 反初始化器
FirstDemo = nil
//:我们发现是对象,returncount为零的时候。我们的反初始化器,开始被调用(FirstDemo = nil 输出: Game Over)
//:总结。初始化和反初始化,一个是创建对象,而另一个是释放对象。在我们App的开发中。我们会不时的创建对象,而没有注意对象的释放。但是,我们却不知道一个很有用的方法。那就是:当我们要在某一个对象消失前,在做一些处理和操作,这个时候,就会用到反初始化器。
//:友情链接
// 我们在项目的开发中,会用到一些,比较特殊的类,比如:可以返回nil的类。
class DemoNil{
convenience init?(Value:@H_301_61@Int){
self.init()// must be
if(Value>6){
return nil
}else{
print("你是我小弟")
}
}
}
//:我们先声明一个变量
var Nil_First : DemoNil?
//:我们要一个为 Nil 的
Nil_First = DemoNil.init(Value: 7)
//:我们在要一个不为空的
Nil_First = DemoNil.init(Value: 5)
//:我们发现,(输出:你是我小弟)
// 总结: 如果想输出一个可以为空的初始化对象,我们就可以在,初始化方法的后面加一个?号,来实现它。
//: [Next](@next)