• iOS 相互引用引起内存泄露问题说明


    release动作只会对自身计数减一,而不会对属性发出release消息,只有该对象的引用计数为0,系统才会对该对象的所有属性发出release消息

    类A的属性有类B,类B的属性有类A,而且两者都是强引用retain

    实例化后[A retainCount]是2    [B retainCount]是2

    [A release] 后  [A retainCount]是1    [B retainCount]是2

    [B release]后   [A retainCount]是1    [B retainCount]是1

    出现A,B无法释放导致内存泄露

    如果A的属性B使用assign修饰

    实例化后[A retainCount]是2    [B retainCount]是1

    [A release] 后  [A retainCount]是1    [B retainCount]是1

    [B release]后   [A retainCount]是1    [B retainCount]是0     由于B的retianCount是0所以被系统回收,系统会对B的所有属性发出一个release消息,

    这时候A被release,引用计数为0,不会内存泄露

  • 相关阅读:
    CSS发布时间
    1CSS简介
    CSS 样式的优先级(重要,一定要理解)
    css为什么叫层叠样式表
    Django学习手册
    Django学习手册
    Django学习手册
    Django学习手册
    Django学习手册
    Django学习手册
  • 原文地址:https://www.cnblogs.com/lhy5678888/p/4643995.html
Copyright © 2020-2023  润新知