#import <Foundation/Foundation.h>
#import "RetainTracker.h"
int main(int argc, const char * argv[]) {
NSAutoreleasePool *pool;
pool = [[NSAutoreleasePool alloc] init];
RetainTracker *tracker;
tracker = [RetainTracker new]; //count 1
[tracker retain]; //count 2
[tracker autorelease];//count still 2 autorelease方法是将tracker放到自动释放池中,所以保留计数器的值不会变
[tracker release];// count 1
NSLog(@"releasing pool");
[pool release]; // NSAutoreleasePool也是一个普通对象,遵从相同的内存管理规则,所以[pool release]使pool = 1减1就成0了,这就销毁了自动 释放池 当保留技术为0时,自动调用dealloc方法
@autoreleasepool {
RetainTracker *tracker2;
tracker2 = [RetainTracker new]; // count 1
[tracker2 retain]; // count 2
[tracker2 autorelease]; // count 2
[tracker2 release]; // count 1
NSLog(@"auto releasing pool");
}
return 0;
}