新建工程:RetainCount2,修改代码如下:
//
// main.m
// RetainCount
//
// Created by cloud on 13-3-8.
// Copyright (c) 2013年 cloud. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface RetainTracker:NSObject
@end
@implementation RetainTracker
- (id) init
{
if(self=[super init])
{
NSLog(@"init: Retain count of %d.",[self retainCount]);
}
return self;
}
- (void) dealloc
{
NSLog(@"dealloc called.Bye Bye.");
[super dealloc];
}
@end
int main(int argc, const char * argv[])
{
NSAutoreleasePool *pool;
pool = [[NSAutoreleasePool alloc] init];
RetainTracker* tracker=[RetainTracker new];
//count: 1
[tracker retain];//count 2
[tracker autorelease];
[tracker release];
NSLog(@"releasing pool");
[pool release];
return 0;
}
运行结果如下:
使用释放池的好外时,你可以在任意地方减少引用记数,但它会在清空释放池时,统一发送release消息。