博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
OC内存管理基础
阅读量:4310 次
发布时间:2019-06-06

本文共 794 字,大约阅读时间需要 2 分钟。

                                                    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

 

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

 

 

 

转载于:https://www.cnblogs.com/pwhit/p/5457729.html

你可能感兴趣的文章
软件工程展望
查看>>
AFNetworking实现程序重新启动时的断点续传
查看>>
Java案例整理
查看>>
【python3基础】python3 神坑笔记
查看>>
小椛椛的板子们2
查看>>
元类的三大核心:__new__,__init__和__call__
查看>>
!!在JS中代表什么
查看>>
Oracle 中的sql函数以及分页
查看>>
Android 发送邮件时遭遇 : no object DCH for MIME type multipart/mixed
查看>>
Android 动画学习小结
查看>>
GizpAttribute
查看>>
Redis安装教程
查看>>
centos yum install redis
查看>>
DBUtils数据库连接池
查看>>
underscore.js _.each[Collections]
查看>>
if...else if switch分支结构
查看>>
前端页面卡顿?或是DOM操作惹的祸,需优化代码
查看>>
JS的节流、防抖及使用场景
查看>>
列表Liist
查看>>
ORACLE操作列
查看>>