f(sixleaves) = sixleaves

重剑无锋 大巧不工

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  95 随笔 :: 0 文章 :: 7 评论 :: 0 Trackbacks
多对象内存管理.m
 1 //
 2 //  main.m
 3 //  多对象内存管理
 4 //
 5 //  Created by sixleaves on 15/5/7.
 6 //  Copyright (c) 2015年 itcast. All rights reserved.
 7 //
 8 
 9 #import <Foundation/Foundation.h>
10 #import "Person.h"
11 #import "Book.h"
12 
13 int main(int argc, const char * argv[]) {
14     
15     // p-1
16     Person *p1 = [[Person alloc] init];
17     // b-1
18     Book *b = [[Book alloc] init];
19     
20     // b-2
21     [p1 setBook:b];
22     // b-1
23     [b release];
24     
25     // p-0
26     [p1 release];
27     return 0;
28 }
29 /*
30     QQ糖的例子:
31     如果你是开房间的人,那么腾讯服务器如何回收房间,这个房间对象通常有一个
32     人数变量。
33     当你创建房间时候,初始值为1。当你离开时候,房间人数减1,变成0、
34     所以房间所占用的内存被回收。
35     当有人进入房间时候,人数加1,当他离开房间时候,人数也减1.
36  
37     引用计数器的原理和其一样。
38  
39     多对象内存管理原则:(先记住、可类比QQ糖例子理解)
40     1.谁创建,谁release
41  如果你通过alloc、new或[mutable]copy来创建一个对象,那么你必须调用release或者autorelease(
42     就如同QQ糖里面的,是你开的房间,那么初始人数是1,你离开房间,人数必须减1)
43  换句话说不是你创建的,就不用你去[auto]release
44     2.谁retain,谁release。
45  只要你调用了额retain,无论这个对象如何生成,你都要调用release。
46     
47  */
48 

Person.m

 1 //
 2 //  Person.m
 3 //  多对象内存管理
 4 //
 5 //  Created by sixleaves on 15/5/7.
 6 //  Copyright (c) 2015年 itcast. All rights reserved.
 7 //
 8 
 9 #import "Person.h"
10 #import "Book.h"
11 @implementation Person
12 - (void)setBook:(Book*)book
13 {
14     _book = [book retain];
15 }
16 - (Book *)book
17 {
18     return _book;
19 }
20 
21 - (void)dealloc
22 {
23     // b-0
24     [_book release];
25     NSLog(@"Person-dealloc");
26     [super dealloc];
27 }
28 @end
29 

Book.m
 1 //
 2 //  Book.m
 3 //  多对象内存管理
 4 //
 5 //  Created by sixleaves on 15/5/7.
 6 //  Copyright (c) 2015年 itcast. All rights reserved.
 7 //
 8 
 9 #import "Book.h"
10 
11 @implementation Book
12 - (void)setPrice:(int)price
13 {
14     _price = price;
15 }
16 - (int)price
17 {
18     return _price;
19 }
20 
21 - (void)dealloc
22 {
23     
24     NSLog(@"Book-dealloc");
25     [super dealloc];
26 }
27 @end
28 
posted on 2015-05-07 16:15 swp 阅读(156) 评论(0)  编辑 收藏 引用 所属分类: objective-c

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