1 #import <Foundation/Foundation.h> 2 3 @interface Book : NSObject 4 { 5 int _price; 6 } 7 8 - (void)setPrice:(int)price; 9 - (int)price; 10 11 @end 12 13 #import "Book.h" 14 15 @implementation Book 16 17 - (void)setPrice:(int)price 18 { 19 _price = price; 20 } 21 22 - (int)price 23 { 24 return _price; 25 } 26 - (void)dealloc 27 { 28 NSLog(@"Book对象被回收"); 29 [super dealloc]; 30 } 31 @end 32 33 34 35 36 37 38 39 40 #import <Foundation/Foundation.h> 41 #import "Book.h" 42 43 @interface Person : NSObject 44 { 45 Book *_book; 46 } 47 48 - (void)setBook:(Book *)book; 49 - (Book *)book; 50 51 @end 52 53 #import "Person.h" 54 55 @implementation Person 56 - (void)setBook:(Book *)book 57 { 58 _book = [book retain]; 59 } 60 61 - (Book *)book 62 { 63 return _book; 64 } 65 66 - (void)dealloc 67 { 68 [_book release]; 69 NSLog(@"Person对象被回收"); 70 [super dealloc]; 71 } 72 @end 73 74 75 76 77 78 79 80 /* 81 1.你想使用(占用)某个对象,就应该让对象的计数器+1(让对象做一次retain操作) 82 2.你不想再使用(占用)某个对象,就应该让对象的计数器-1(让对象做一次release) 83 84 3.谁retain,谁release 85 86 4.谁alloc,谁release 87 */ 88 89 #import <Foundation/Foundation.h> 90 #import "Person.h" 91 #import "Book.h" 92 93 int main() 94 { 95 // b-1 96 Book *b = [[Book alloc] init]; 97 // p-1 98 Person *p1 = [[Person alloc] init]; 99 100 //p1想占用b这本书 101 // b-2 102 [p1 setBook:b]; 103 104 // p-0 105 // b-1 106 [p1 release]; 107 p1 = nil; 108 109 // b-0 110 [b release]; 111 b = nil; 112 return 0; 113 }