The basic rule to apply is everything that increases the reference counter with alloc, [mutable]copy[withZone:] or retain is in charge of the corresponding [auto]release.
如果对一个对象使用了alloc、[mutable]copy、retain,那么你必须使用相应的release或者autorelease。
类型定义:
基本类型:任何C的类型,如:int、short、char、long、struct、enum、union等属于基本类型或者结构体;
内存管理对于C语言基本类型无效;
任何继承与NSObject类的对象都属于OC类型。
所有OC对象都有一个计数器,保留着当前被引用的数量。
内存管理对象:
OC的对象:凡是继承于NSObject;
每一个对象都有一个retainCount计数器。表示当前的被应用的计数。如果计数为0,那么就真正的释放这个对象。
2.alloc函数是创建对象时用的,创建完成后计数器为1,只能使用一次
3.retain是一个对象的计数器+1,可以调用多次
4.release 是一个对象的计数器-1,减到0的时候就会从内存中释放
增加对象计数器的三种方式
1.当明确使用alloc方法来分配对象
2.当明确使用copy【with zone :】或者是mutableCopy[withzone:]来copy对象的时候
3.当明确使用retain消息的时候
以上三种方法使得计数器增加,那么就需要使用[auto]release来释放,其实就是递减计数器