zoukankan      html  css  js  c++  java
  • OC内存管理-黄金法则

    1.内存管理-黄金法则

    如果对一个对象使用了alloc、[mutable]copy、retain,那么必须使用相应的release或autorelease。

    类型定义: 基本类型:任何c的类型,如:int、short、char、long、struct、enum、union等属于基本结构类型或结构体。

    内存管理对于C语言基本类型无效;

    任何继承与NSObject类的对象都属于OC类型。

    所有OC对象都有一个计数器,保留着当前被引用的数量。

    2.内存管理对象:

    OC的对象:凡是继承与NSObject; 每一个对象都有一个retainCount计数器。表示当前的被应用的计数。如果计数为0,那么就真正的释放这个对象。

    alloc、retain、release函数: a.alloc函数是创建对象使用,创建完成后计数器为1;只用1次。

                                           b.retain是对一个对象计数器+1;可以调用多次

                                           c.release是对一个对象计数器-1;减到0 对象就会从内存中释放。

    增加对象计数器的三种方式: a.当明确使用alloc方法来分配对象;

                                          b.当明确使用copy[WithZone]或者mutableCopy[WithZone]来copy对象的时候;

                                          c.当明确使用retain消息。 上述三种方法使得计数器增加,那么就需要使用[auto]release来明确释放对象,也就是递减计数器。

    3.retain点语法

    OC内存管理正常情况要使用大量的retain和release操作;

    点语言可以减少使用retain和release的操作。

    copy属性:copy属性是完全把对象重新拷贝一份,计数器重新设置为1,和之前拷贝的数据完全脱离关系。

  • 相关阅读:
    Xshell6提示“要继续使用此程序,您必须应用最新的更新或使用新版本”的解决办法
    设置UIImage的边框和圆角大小以及颜色
    CATransition使用
    [转]C/C++中extern关键字详解
    New ipad与ipad2有何不同
    使用Xcode收藏自己常用的代码模板
    objectivec 关于 self 的用法总结
    查找 EXC_BAD_ACCESS 问题根源的方法
    结构体的对齐方式
    添加three20模板的方法
  • 原文地址:https://www.cnblogs.com/fml1com/p/4925826.html
Copyright © 2011-2022 走看看