zoukankan      html  css  js  c++  java
  • 【读书笔记】iOS-内存管理

    Cocoa的内存管理:retain,release和autorelease.

    每个对象都维护一个保留计数器。对象被创建时,其保留计数器值为1;对象被保留时,保留计数器值加1;对象被释放时,保留计数器值减1;当保留计数器值归0时,对象被销毁。在销毁对象时,首先调用对象的dealloc方法,然后回收其占用的内存以供其他对象使用。

    当对象接收到一条autorelease消息时,其保留计数器值并不立马改变。相反,该对象只是被放入NSAutoreleasePool中。当自动释放池被销毁时,会身池中的所有对象发送release消息。所有被自动释放的对象都将其保留计数器值减1.如果保留计数器值归0,则对象被销毁。当使用AppKit时,Objective-C会在适当的时间为你创建和销毁自动释放池,例如在当前用户事件处理完毕时。除此以外,你要负责创建自己的自动释放池,Foundation库工具的模板包含了这些代码。

     

    Cocoa中关于对象及其保留计数器的3条规则。

    1,如果使用new,alloc或copy操作获得一个对象,则该对象的保留计数器值为1.

    2,如果通过任何其它方法获得一个对象,则假设该对象的保留计数器值为1,而且已经被设置为自动释放。

    3,如果保留了某个对象,则必须保持retain方法和release方法的使用次数相等。

     

    参考资料:《Object-C基础教程》

     

     
     
  • 相关阅读:
    linux基础名词
    计算机基础
    c++ 构造函数
    c++ stdafx.h、targetver.h文件
    centos7初步命令
    mysql 操作表的语句
    后台返回API数据格式
    nginx相关知识
    js复制内容到剪贴板格式化粘贴到excel中
    PHP开启错误提示
  • 原文地址:https://www.cnblogs.com/yang-guang-girl/p/4808131.html
Copyright © 2011-2022 走看看