美文网首页
Swift从入门到精通-4

Swift从入门到精通-4

作者: 小暖风 | 来源:发表于2022-06-05 10:12 被阅读0次

    一、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

          本文链接:https://www.haomeiwen.com/subject/cqzqmrtx.html