#import <foundation/foundation.h>
@interface person : nsobject
{
book * _book;
int _age;
}
/*
oc对象
1.@property能制动生成setter和getter方法
2.retain告诉编译器自动生成setter里的retain
3.atomic:低性能(默认情况下)
nonatomic:高性能
*/
@property (nonatomic, retain) book *book;
/*
非oc对象
2.assign告诉编译器自动生成setter的assign设置
*/
@property (nonatomic, assign) int age;
@end
@implementation person
- (void)dealloc
{
[_book release];
[super dealloc];
}
@interface book : nsobject
@implementaton book
int main()
/*
1.当调用autorelease方法,会返回对象本身,对象计数器不做任何改变
2.autorelease会把对象放在自动释放池里
3.当自动释放池被销毁时,对释放池里的所有对象进行一次release
4.所有的释放池都是放在内存栈中,采取先进后出原则,把所有的对象放在栈顶
*/
@autoreleasepool
{// 创建自动释放池
person *p = [[[person alloc] init]
autorelease];
@autoreleasepool
{
book *b = [[[book alloc] init] autorelease];
}// 销毁自动释放池
return 0;
void test()
person *p = [[person alloc] init];
book *b1 = [[book alloc] init];
p.book = b1;
book *b2 = [[book alloc] init];
p.book = b2;
[b2 release];
[b1 release];
[p release];