Object-C之手动内存管理

Object-C之手动内存管理,第1张

在X-Code 4.4之后,苹果推出了ARC(Automatic Reference Counting),但是在之前的老版本中都是MRC(Mannul Reference Counting),今天来简单介绍一下MRC的一些基本内容:


一、对象的属性方法

1.每新增一个指针指向一个对象时,调用[对象名 retain];此举是先给对象的reatinCount值+1,再执行指针指向该对象。


2.每减少一个指针指向一个对象时,调用[对象名 ];此举是先给对象的reatinCount值-1,再执行指针移除指向该对象。


3.调用retainCount时,会返回当前该对象的指针指向数量。



二、基本规则:

1.当对象的retainCount=0时,会自动执行对象的私有方法dealloc方法。


该方法可以自定义重写,但是在方法的“最后”(一定是最后面哦,就是紧贴方法结束的大括号的位置)写上[super dealloc];此举目的是最后也要让父类执行dealloc对象的方法,彻底释放该对象所占据的全部内存空间。


2.写代码时,某个对象写了多少个retain,就应该写多少个release,应该是一一匹配的关系。


3.遵循谁用谁retain,谁不用谁release原则。


初始创建时默认retainCount+1,不用手写retain。


4.对象不用释放后,应把指向该对象的指针设置成nil/NULL,(OC对象nil,C指针NULL)。


5.当指针无指向时,调用指针类型的方法,编译器不会报错,运行时会跳过该命令不执行。


但如果访问属性,则会报错。



三、衍生概念:

1.野指针的两种情况:第

一、指针未初始化时,指向的是一块随机的内存空间。



二、指向对象的指针指向的空间被提前释放。


2.僵尸对象:当一个对象被释放后,系统还未处理分配该对象原来的内存空间时,原来指向该对象的指针还可以对该内存空间进行 *** 作的情况,此种情况非常危险,应避免。


一般黑客或泄露信息等情况都可通过 *** 作指针获取内存中的信息。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/langs/634371.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-04-16
下一篇2022-04-16

发表评论

登录后才能评论

评论列表(0条)

    保存