美文网首页
[swift 进阶]读书笔记-第五章:结构体和类 C5P5_6

[swift 进阶]读书笔记-第五章:结构体和类 C5P5_6

作者: liaoworkinn | 来源:发表于2019-01-04 13:16 被阅读13次

    结构体和类

    5.5 闭包和可变性

    知识点:结构体的存储位置。

    默认情况下结构体会存储在堆上,但绝大多数时候swift会对其优化,把结构体存储到栈上
    如果结构体的变量被一个函数闭合(内部使用)了,这个结构体就会存放在堆上
    结构体太大也会被存在堆上

    5.6 内存 (这一节主要讲循环引用相关的)


    知识点: 标准库中大部分是结构体或者枚举。因为只有一个持有者。一般情况下是不用考虑循环引用的

    weak 引用


    这里就讲了一些循环引用的基本知识点,我相信大家都明明白白的,不赘述。

    知识点: delegate 用 weak关键字修饰(同OC)

    在闭包中的使用方法

    ///当闭包没有参数时 不要下面的 para 
    closure = {[weak self] para in
     self?.func()
    }
    

    unowned 引用


    作用:不持有引用对象,但这个属性会一直有效有效(意思就是unowned 修饰的属性一定要是不为nil的)

    如果确实一定有值,这个属性就不应该是可选值,这个时候可以用unowned关键字。

    在闭包中的使用:同weak关键字 但self```可能不是非必选``的。

    tips:


    实际项目中如果对unowned 和weak 拿捏的不太准的话鼎力推荐使用weak !!!
    我之前项目中一直的一个崩溃就是 用[unwoned self] 修饰self 但self可能为nil。 导致直接崩溃。

    文章源文件地址

    相关文章

      网友评论

          本文标题:[swift 进阶]读书笔记-第五章:结构体和类 C5P5_6

          本文链接:https://www.haomeiwen.com/subject/apvhrqtx.html