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、计算型属性,存储型属性

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • ****函数****目标 掌握函数的定义格式 掌握外部参数的用处 掌握无返回类型的三种函数定义方式 ****代码实...
    金歌漫舞阅读 2,839评论 0 0
  • 简介 Swift 语言由苹果公司在 2014 年推出,用来撰写 OS X 和 iOS 应用程序 2014 年,在 ...
    充电星球阅读 13,185评论 17 99
  • 闭包(Closures)闭包有三种形式:全局函数是具有名称且不捕获任何值的闭包。嵌套函数是具有名称的闭包,可以从其...
    萧1帅阅读 1,241评论 0 0
  • 一、闭包 1、可以理解成OC中的block 2、一段预先准备好的代码 3、可以当做参数传递 4、在需要的时候执行 ...
    小暖风阅读 2,929评论 0 0
  • 01.常量与变量 ·let定义常量,一经赋值不允许再次修改 ·var定义变量,赋值之后仍然可以修改 定义常量:le...
    CocoCong阅读 2,383评论 0 0