zoukankan      html  css  js  c++  java
  • 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,不会内存泄露

  • 相关阅读:
    DAY7-面向对象之封装
    Java遇到的问题、错误——持续更新
    008单例、继承、final
    java一些使用
    2.1端口扫描器
    PyCharm设置
    常用算法
    PyCharm最新2018激活码,最新方法
    004数组
    042多进程
  • 原文地址:https://www.cnblogs.com/lhy5678888/p/4643995.html
Copyright © 2011-2022 走看看