#import <Foundation/Foundation.h>
/*
1.你想使用某个对象,就应该让对象的计数器 +1
(让对象做一次retain操作)
2.你不想使用某个对象,就应该让对象的计数器 -1
(让对象做一次release)
3.谁retain,谁release
4.谁alloc,谁release
*/
@interface Book : NSObject、
@property int price;
@end
@implementation Book
@end
@interface Person : NSObject
{
Book *_book;
}
- (Book *)book;
- (void)setBook:(Book *)book;
@end
@implementation Person
- (Book *)book
{
return _book;
}
/*
内存管理代码规范:
1.只要调用了alloc,必须有release(autorelease)
*/
- (void)setBook:(Book *)book
{
//1.判断是不是新传进来的对象
if(book != _book)
{
//2.对旧对象做一次release
[_car release];
//3.对新对象做一次retain
_book = [book retain];
}
}
- (void)dealloc
{
//dealloc方法的代码规范
//对self所拥有的其他对象做一次release
[_book release];
//一定要[super dealloc],而且放到最后面
[super dealloc];
}
@end
int main (int argc, const char *argv[])
{
//b-1
Book *b = [[Book alloc] init];
//p-1
Person *p1 = [[Person alloc] init];
//p1想占用b这本书
//b-2
[p1 setBook:b];
//p-0 b-1
[p1 release];
p1 = nil;
//b-0
[b release];
b=nil;
return 0;
}
objective-c 内存管理2
最新推荐文章于 2015-02-26 20:25:25 发布