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,谁release 4.谁alloc,谁release 5.当一个对象要被回收的时候,就会调用dealloc函数,一定要调用[super dealloc],这句调用要放在最后面
例: Book *b = [[Book alloc] init]; // p-1 Person *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;
|