1 /*
2 1>僵尸对象:所占用内存已经被回收的对象,将是对象不能再使用
3 2>野指针:指向僵尸对象(不可用内存)的指针
4 3>空指针:没有指向任何东西的指针(存储的对象可以是nil,NULL,0)
5 * 给野指针发送消息会报错,给空指针发送消息不会报错
6 */
7
8 #import <Foundation/Foundation.h>
9 #import "Person.h"
10
11 int main(){
12 // 1
13 Person *p = [[Personalloc]init];
14
15 NSUInteger c = [p retainCount];
16
17 NSLog(@"计数器:%ld",c);
18
19 // 2 retain方法返回的是对象本身
20 [p retain];
21
22 // 1
23 [p release];
24
25 // 0 野指针:指向僵尸对象(不可用内存)的指针
26 [p release];
27 //
28 p.age = 10;
29 //指针p变成空指针
30 p = nil;
31
32 // EXC_BAD-ACCESS:访问了一块坏的内存(已经被回收、不能使用的内存)
33 // 野指针错误
34 // OC中不存在空指针错误,给空指针发送消息不报错
35 [p release];
36
37 return0;
38 }