1、什么是初始化 & 什么是反初始化?
1、初始化
什么是初始化?
初始化是用来为对象设定初始状态的方法。
2、反初始化
什么是反初始化?
反初始化是在对象消失的时候调用其中的代码。此方法在对象retaincount 数降到0时运行,就在要将对象从内存中清除时调用。
2、创建一个类,使用初始化&反初始化&便捷初始化
class initAnddeinitExample {
/**
主初始化器
*/
init() {
print("初始化成功")
}
/**
便捷初始化器,是调用主初始化器所必须的
*/
convenience init(text:String){
self.init()
print("便捷初始化成功"+text)
}
/**
反初始化器
*/
deinit {
print("反初始化成功")
}
}
代码的注释:
从上面的代码,我们看到使用了主初始化器和便捷的初始化器&反初始化器。在便捷初始化器的时候,一定要调用主初始化器,来快捷实现初始化。
3、初始化的过程
/**
创建一个对象
*/
var example:initAnddeinitExample?
/* 使用主初始化器 */
example = initAnddeinitExample()
/* 输出:初始化成功 */
example = nil
/* 输出:反初始化成功 */
/**
使用便捷初始化器
*/
example = initAnddeinitExample(text:"成功QQ吧")
/*
输出:
初始化成功
便捷初始化成功成功QQ吧
*/
print(example!)
4、可失败的初始化器
注意:要创建一个可以返回nil的初始化器,也可以称为可失败的初始化器。就在init 关键字的后面放上一个问号。
class exampleNil {
init() {
print("init")
}
convenience init?(value:Int){
/* 便捷初始化的基础*/
self.init()
if value>5 {
return nil
}
}
deinit {
print("deint")
}
}
let NilExample = exampleNil(value:250) as Any
print(NilExample as Any)
/**
注释: 在使用一个可以初始化失败的初始化器时,在任何可以存储该结果的变量都是可变的。
*/