------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
内容:内存管理
为什么说他难呢?因为内存如果需要我们程序员去管理的话,那个难度肯定是很大的,如果是Java,垃圾回收器会把这份工作给做了,我们不需要关心,但是就是因为如此,Android运行速度上会慢一下,原因很简单,Java的垃圾回收器有很多收集算法的,这个在回收的过程中是很浪费时间的,效率自然就低了,但是如果这份工作给程序员自己去做的话,效率上肯定会增加,但是对于程序员来说任务就比较繁重了,而且还要特别的小心,千万不能造成内存溢出和泄露。
这里我们主要从四个方面来介绍一下内存管理
1、简单的例子来了解引用计数的使用
2、set方法来控制引用计数问题
3、销毁方法来控制引用计数问题
4、初始化方法来控制引用计数问题
下面就来简单看一下OC中的内存管理
这个例子有点复杂,我们慢慢分析
Dog.h
Dog.m
Dog类中定义了name属性,并且给他提供了一个set方法
Person.h
Person类中有一个Dog的属性,然后提供了set方法。代码有点复杂,我们后面会详细说明
下面来看一下测试代码
main.m
首先如果想演示这个例子的话,需要修改一下设置:
最新的XCode默认是会自动选上ARC(Automatic Reference Counting),如果我们不把这个手动关闭的话,代码中会报错的。
alloc用来创建对象,创建完成之后,引用计数为1,只调用一次
retain使引用计数+1,可以多调用几次
release使引用计数-1,可以多调用几次
当引用计数为0的时候会调用dealloc
黄金法则:每次调用alloc一次,都需要调用release一次,他们两是成对出现的