1.僵尸对象
- 只要一个对象被释放了, 我们就称这个对象为 "僵尸对象"
- 已经被销毁的对象(不能再使用的对象)
2.野指针
-
指向僵尸对象(不可用内存)的指针
-
当一个指针指向一个僵尸对象, 我们就称这个指针为野指针
-
给野指针发消息会报EXC_BAD_ACCESS错误 。message sent to deallocated instance 0x1001146b0
3.空指针
- 没有指向存储空间的指针(里面存的是nil, 也就是0)
给空指针发消息是没有任何反应的 - 为了避免给野指针发送消息会报错, 一般情况
下, 当一个对象被释放后我们会将这个对象的指针设置为空指针
Person *p = [[Person alloc] init]; // 1
[p release]; // 1-1 = 0
// *** -[Person release]: message sent to deallocated instance 0x1001146b0
p = nil;
[p release];
[p release];
[p release];
网友评论