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

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

     

  • 相关阅读:
    Prometheus实现微信邮件钉钉报警
    产品需求文档和原型
    各类数据集
    redis与mysql数据同步
    hadoop hbase hive spark对应版本
    Redis集群的搭建
    mysql数据库数据与redis同步
    企业级Zabbix监控实战(一)
    mysql实现高可用架构之MHA
    04-爬取单个英雄联盟英雄的符文图片
  • 原文地址:https://www.cnblogs.com/pwhit/p/5457729.html
Copyright © 2011-2022 走看看