Swift构造函数

前端之家收集整理的这篇文章主要介绍了Swift构造函数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

1.@H_502_2@构造函数

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

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

var name:@H_502_2@ String

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

var title:@H_502_2@String?@H_502_2@

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

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

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

2@H_502_2@)重载构造函数

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

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

3@H_502_2@)重写

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

2.KVC

本质:@H_502_2@ 在运行时动态向对象发送@H_502_2@ setValue:@H_502_2@forKey:@H_502_2@

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

2@H_502_2@)KVC@H_502_2@是OC@H_502_2@特有的 age@H_502_2@在swift@H_502_2@不兼容 @H_502_2@基本数据类型不能使用可选类型 @H_502_2@要进行初始化

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

3.@H_502_2@便利构造函数@H_502_2@

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

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

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

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

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

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

4.@H_502_2@懒加载

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

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

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

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

-不能存值 @H_502_2@只能取值

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

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

4@H_502_2@)存储属性

-能存值 @H_502_2@能取值

-需要开辟内存空间

-耗费内存

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

5.@H_502_2@闭包的循环引用

(@H_502_2@1)析构函数@H_502_2@ deinit{}@H_502_2@

(@H_502_2@2对象销毁后@H_502_2@ weakSelf指向的地址为@H_502_2@nil

(@H_502_2@3)@H_502_2@unowned相当于@H_502_2@oc中的@H_502_2@__unsafe_unretain 对象销毁后@H_502_2@ 指向的地址不变@H_502_2@

6.@H_502_2@网络访问

swift与@H_502_2@OC共存时@H_502_2@ 需要桥接@H_502_2@

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

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

猜你在找的Swift相关文章