1.内存管理-黄金法则函数
若是对一个对象使用了alloc、[mutable]copy、retain,那么必须使用相应的release或autorelease。对象
类型定义: 基本类型:任何c的类型,如:int、short、char、long、struct、enum、union等属于基本结构类型或结构体。继承
内存管理对于C语言基本类型无效;内存
任何继承与NSObject类的对象都属于OC类型。it
全部OC对象都有一个计数器,保留着当前被引用的数量。内存管理
2.内存管理对象:io
OC的对象:凡是继承与NSObject; 每个对象都有一个retainCount计数器。表示当前的被应用的计数。若是计数为0,那么就真正的释放这个对象。table
alloc、retain、release函数: a.alloc函数是建立对象使用,建立完成后计数器为1;只用1次。语法
b.retain是对一个对象计数器+1;能够调用屡次引用
c.release是对一个对象计数器-1;减到0 对象就会从内存中释放。
增长对象计数器的三种方式: a.当明确使用alloc方法来分配对象;
b.当明确使用copy[WithZone]或者mutableCopy[WithZone]来copy对象的时候;
c.当明确使用retain消息。 上述三种方法使得计数器增长,那么就须要使用[auto]release来明确释放对象,也就是递减计数器。
3.retain点语法
OC内存管理正常状况要使用大量的retain和release操做;
点语言能够减小使用retain和release的操做。
copy属性:copy属性是彻底把对象从新拷贝一份,计数器从新设置为1,和以前拷贝的数据彻底脱离关系。