OC内存管理中的计数器思想理解
每个对象刚分配存储空间初始化时候默认计数器为1,然后每有一个新的指针指向他的时候计数器就会加1,每当这个指针不用而撤掉之后要减1,当计数器为0的时候,从内存中清除。
1> retain :计数器+1,会返回对象本身2> release :计数器-1,没有返回值3> retainCount :获取当前的计数器4> 僵尸对象 :所占用内存已经被回收的对象,僵尸对象不能再使用5> 野指针 :指向僵尸对象(不可用内存)的指针,给野指针发送消息会报错(EXC_BAD_ACCESS)6> 空指针 :没有指向任何东西的指针(存储的东西是nil、NULL、0),给空指针发送消息不会报错7> 在.h文件中用@class来声明类8> 在.m文件中用#import来包含类的所有东西
注意点:
1.你想使用(占用)某个对象,就应该让对象的计数器+1(让对象做一次retain操作)2.你不想再使用(占用)某个对象,就应该让对象的计数器-1(让对象做一次release)3.谁retain,谁release4.谁alloc,谁release5.当一个对象要被回收的时候,就会调用dealloc函数,一定要调用[super dealloc],这句调用要放在最后面
例:
Book *b = [[Book alloc] init];// p-1Person *p1 = [[Person alloc] init];// b-2[p1 setBook:b];// p-0// b-1[p1 release];p1 = nil;// b-0[b release];b = nil;return 0;
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) | 黑马程序员IT技术论坛 X3.2 |