Swift构造函数

谁说胖子不能爱 提交于 2020-03-02 05:30:33

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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!