f(sixleaves) = sixleaves

重剑无锋 大巧不工

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  95 随笔 :: 0 文章 :: 7 评论 :: 0 Trackbacks
 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 
posted on 2015-05-05 16:37 swp 阅读(216) 评论(0)  编辑 收藏 引用 所属分类: objective-c

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理