Swift学习 init()和deinit()

一、初始化方法(init())
1、定义:类初始化对象时所调用的方法
2、分类: (1)默认初始化方法
(2)便利初始化方法
(3)使用闭包
3、一些注意点:
(1)方法固定名为init,没有返回值,方法名init前面也不需要加func
(2)在创建对象之后,如果要使用对象的属性之前,必须对属性初始化
(3)声明一个变量,必须赋初始值,除非这个变量是强制解包可选,或者在初始化方法赋初始值,也可达到同样的效果
(4)初始化方法可以多个存在,并且每一个的方法名都是init,但是参数要不同。对于方法参数不同,不仅仅通过参数类型来判断,还涉及参数的名称,这个在其他语言中称为:方法的重载(参数名或者参数别名不同)
4、一些例子的运用代码块

4.1、默认初始化方法,声明成员属性的时候,不赋初始值,但必须要有初始话方法对成员变量进行初始化

4.2、当声明为强制解包可选(!)可以不用初始化方法,在类进行实例化对象的时候再对变量进行赋初始值,但是有也没关系。
Swift学习 init()和deinit()_第1张图片

4.3、多个初始化方法并行(方法的重载)
Swift学习 init()和deinit()_第2张图片

4.4、初始化方法的分类
(1) 使用提供的默认初始化方法

(2)便利初始化方法及其重载
Swift学习 init()和deinit()_第3张图片

(3)使用闭包(如果某个存储属性的默认值需要特别定制或者准备,那么久可以使用闭包来初始化这个属性的默认值)
Swift学习 init()和deinit()_第4张图片

二、反初始化方法(deinit())
1、定义:可以这么理解,初始化方法是为了类创建对象的时候,使用对象属性对其属性赋初始值,那么当你这个对象销毁的使用,也要对气属性进行释放。构造那么一个场景:当我们建立一个数据库访问,在初始化的时候打开链接,如果程序退出,链接不释放,资源就浪费了,反初始化方法可以释放这个链接,减少资源浪费。
2、注意点
当要关闭链接的时候,要把对象设置为nil,不然反初始化方法不会被调用
3、暂时没找到比较好的例子可以说明,后面会介绍。

你可能感兴趣的:(swift,init,初始化方法,反初始化方法)