OC-EX26野指针与空指针

OC-EX26野指针与空指针
 1 #import <Foundation/Foundation.h>
 2 
 3 @interface Person : NSObject  //  继承了NSObject
 4  @property  int age;
 5 @end
 6 
 7 @implementation Person
 8 
 9 
10 - ( void)dealloc
11 {
12 
13     NSLog(@"Person-dealloc");
14 
15     [super dealloc];
16 }
17 
18 @end
19 
20  int main() {
21 
22 
23     Person *p = [[Person alloc] init];
24 
25     NSUInteger myCount = [p retainCount]; 
26 
27 
28     [p retain];  //  2
29 
30     [p release];  //  1
31      [p release];  //  0
32 
33     p.age = 10;  //  如果不打开编译器的检查僵尸对象的选项,这行是不会报错。但逻辑上就是错的。
34 
35     p = nil;  //  nil其实就是0
36 
37     [p release];  //  在没有赋值为nil事后,p是野指针。
38      [p release];
39 
40      /*
             0.僵尸对象:所占用内存已经被回收的对象
41          1.野指针:指向僵尸对象(不可用内存)的指针,称为野指针。给野指针发送消息会报错 EXC_BAD_ACCESS
             2.空指针:没有指向任何东西的指针(存储的东西是nil、NULL、0), 给空指针发送消息不会报错。
42          3..当指针为野指针,必须给野指针赋值为nil。
43     
44       */
45      return 0;
46 }
47 

你可能感兴趣的:(OC-EX26野指针与空指针)