Swift从入门到精通-4

一、KVC

1、在init中调用setValuesForKeysWithDictionary实现给属性赋值

2、调用KVC方法之前,必须调用super.init(),init()调用之后,本类的属性和父类的属性全部被初始化完成,可选属性除外

3、如果使用KVC给对象设置初始值,可选项的基本数据类型必须设置默认值,不然会崩溃,因为基本数据类型默认是nil,不分配内存空间。

4、在使用KVC的时候,如果值没有分配空间,如果是结构体\类,会先调用默认的构造函数分配空间,然后再设置数值,如果是基本数据类型,就直接崩溃

5、setValuesForKeysWithDictionary会遍历字典中所有键值对,依次调用setValue

6、系统默认会给各个属性值

7、如果没有key对应的属性,会调用forUndefinedKey方法,过滤不需要的属性

8、如果没有实现forUndefinedKey方法会直接崩溃

9、如果父类实现了KVC的方法,子类就不再需要单独实现

10、convenience init?(),表示便利的构造函数,作用:判断判断参数条件是否合法。传递“重要/常用”参数。如果条件不满足,可以返回nil,只有便利的构造函数才允许返回nil。指定的构造函数不允许返回nil,必须要返回一个对象。

二、懒加载

1、懒加载在swift中有特殊写法,懒加载就是一个闭包,闭包只会执行一次

2、例子:

lazy var dataList:[String] = {

return ["张三","李四"]

}()

(1)dataList能够存储字符串数组

(2)当调用dataList的时候,如果没有值,会执行后面的闭包

(3)结果会保存在dataList中,下次再使用就不会再调用闭包了

(4)lazy的用处,如果没有lazy,试图控制器一旦被创建,dataList就会被初始化

3、如果直接返回结果,懒加载可以简化

lazy var list:[String] = ["张三","李四"]

4、didSet{} 赋完值后触发

5、计算型属性,存储型属性

你可能感兴趣的:(Swift从入门到精通-4)