1.构造函数:
给属性开辟内存空间 给属性设置初始值 最终目标创建一个对象 用init构造函数 参数有可能不同
(1)//定义属性使用var 是我们开发需要的
var name: String
//可选属性 - 默认等于nil 可以不需要在构造函数里进行初始化 title属性没有分配内存空间 在其他地方设置值的时候才需要分配内存空间
var title:String?
//‘override’ 重写关键字 子类继承父类 需要对父类里面的方法进行扩展 就叫重写
//调用super init()之前 保证子类初始化完成
//在swift中 在当前工程 类都是全局共享的 不用导头文件
(2)重载构造函数
函数名相同 参数名或者参数个数不同 就是重载 不仅限于构造函数 包括其他函数
//属性名字和传入的参数一样 需要使用self区分
(3)重写
//如果当前类中提供了构造函数 则默认的构造函数没有了 因为默认的构造函数init 无法给子类的属性进行初始化
2.KVC
本质: 在运行时动态向对象发送 setValue:forKey:
(2)KVC是OC特有的 age在swift不兼容 基本数据类型不能使用可选类型 要进行初始化
3.便利构造函数
(1)‘?’ 判断前面的可选类型的对象是否为nil 如果为nil 则后面的代码不执行 直接返回nil 如果不为nil 则执行后面的代码 返回结果
(4)只有便利构造函数中能使用self. init()
(5)便利构造函数可以返回nil
4.懒加载
使用lazy关键字 在需要的时候 对其进行创建 并把返回的值给定义的lazy属性
(1)可以使用闭包作为懒加载
(2)didSet 当外界设置完值之后 会直接调用didSet
(3)计算属性可以省略get ,不能赋值
-不能存值 只能取值
-不需要开辟内存空间 耗费cpu
(4)存储属性
-能存值 能取值
-需要开辟内存空间
-耗费内存
(5) 懒加载 闭包只会执行一次 开辟内存存储
5.闭包的循环引用
(1)析构函数 deinit{}
(2)对象销毁后 weakSelf指向的地址为nil
(3)unowned相当于oc中的__unsafe_unretain 对象销毁后 指向的地址不变
6.网络访问
swift与OC共存时 需要桥接
(1)try! 向系统保证我的数据一定能够反序列化成功
try? 如果返回的数据不能反序列化成功 则直接返回nil
原文链接:https://www.f2er.com/swift/324403.html