微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Swift构造函数

1.构造函数

属性开辟内存空间 属性设置初始值 最终目标创建一个对象 init构造函数 参数有可能不同

1//定义属性使用var 是我们开发需要的

var name String

//可选属性 认等于nil 可以不需要在构造函数里进行初始化 title属性没有分配内存空间 在其他地方设置值的时候才需要分配内存空间

var titleString

//‘override’ 重写关键字 子类继承父类 需要对父类里面的方法进行扩展 就叫重写

//调用super init()之前 保证子类初始化完成

//swift 在当前工程 类都是全局共享的 不用导头文件

2)重载构造函数

函数名相同 参数名或者参数个数不同 就是重载 不仅限于构造函数 包括其他函数

//属性名字和传入的参数一样 需要使用self区分

3)重写

//如果当前类中提供了构造函数 认的构造函数没有了 因为认的构造函数init 无法给子类的属性进行初始化

2.KVC

本质: 在运行时动态向对象发送 setValueforKey

1)可选类型的属性可以不在构造函数中初始化

2KVCOC特有的 ageswift不兼容 基本数据类型不能使用可选类型 要进行初始化

3)如果子类没有提供构造函数 则可以使用父类的构造函数

3.便利构造函数

1判断前面的可选类型的对象是否为nil 如果为nil 则后面的代码不执行 直接返回nil 如果不为nil 则执行后面的代码 返回结果

2)不能重写父类里面的便利构造函数

3)便利父类里面的便利函数

4)只有便利构造函数中能使用self. init()

5)便利构造函数可以返回nil

6)便利构造函数最终调用指定构造函数

4.懒加载

使用lazy关键字 在需要的时候 对其进行创建 并把返回的值给定义的lazy属性

1)可以使用闭包作为懒加载

2didSet 当外界设置完值之后 会直接调用didSet

3)计算属性可以省略get ,不能赋值

-不能存值 只能取值

-不需要开辟内存空间 耗费cpu

-每次都会调用get方法计算

4)存储属性

-能存值 能取值

-需要开辟内存空间

-耗费内存

(5) 懒加载 闭包只会执行一次 开辟内存存储

5.闭包的循环引用

1)析构函数 deinit{}

2对象销毁 weakSelf指向的地址为nil

3uNowned相当于oc中的__unsafe_unretain 对象销毁 指向的地址不变

6.网络访问

swiftOC共存时 需要桥接

1try 向系统保证我的数据一定能够反序列化成功

try 如果返回的数据不能反序列化成功 则直接返回nil

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐