#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];