zoukankan      html  css  js  c++  java
  • OC内存管理基础

                                                        OC 内存管理基础

     

    一. retain和release基本使用

    使用注意:

    1.你想使用(占用)某个对象,就应该让对象的计数器+1(让对象做一次retain操作)

    2.你不想再使用(占用)某个对象,就应该让对象的计数器-1(让对象做一次release)

    3.谁retain , 谁release

    4.谁alloc,谁release

    如:

     int  main()

        {

         Person *p = [[Person alloc]init];         //计数器加1 ,值为1

         [p retain];       // 计数器加1,值为2

         [p release];    // 计数器减1 ,值为1

         [p release];    // 计数器减1 ,值为0;

         return 0;

        }

    二. 空指针,野指针,僵尸对象

    空指针:没有任何东西的指针(存储的东西是nil, Nall0)

    给空指针发送消息不会报错

    野指针:指向僵尸对象(不可用内存)的指针,给野指针发送消息会报错

    错误:EXC_BAD_ACCECC:访问一块坏的内存(已经被回收,已经不可用的内存)

    如:int main()

        {

         Person *p = [[Person alloc]init];      //计数器加1 ,值为1

         [p release];          // 计数器减1 ,值为0.

         [p release];        // 野指针指向僵尸对象(不可用的内存)

         return 0;

        }

        会报经典错误:EXC_BAD_ACCECC:访问一块坏的内存(已经被回收,已经不可用的内存)

    僵尸对象:所占用内存已经回收的对象,僵尸对象不能再使用

     

    经典错误:message  sent  to deallocated  instauce  ox100109a10

    意思是:给已经释放的对象发送了一条错误的消息

     

  • 相关阅读:
    UNDO表空间的ORA1122错误解决(二)转
    Oracle 碎片整理
    如何解决Ora00600 4194错误转自eygle
    Oracle维护常用sql语句
    ORA01152: file 1 was not restored from a sufficiently old backup
    oracle的一些信息抽取脚本.sql
    Flash Recovery Area空间不足导致数据库不能打开
    HP—UNIX的信息收集脚本
    详细解读 STATSPACK 报告
    OLTP和OLAP
  • 原文地址:https://www.cnblogs.com/pwhit/p/5457729.html
Copyright © 2011-2022 走看看