黑马程序员技术交流社区

标题: 关于对OC计数器思想的理解 [打印本页]

作者: 陌生爱人    时间: 2014-10-12 22:11
标题: 关于对OC计数器思想的理解

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;






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2