#import <Foundation/Foundation.h>
#import "Person.h"
int main(int argc, const char * argv[])
{
// NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];早期自动释放池
@autoreleasepool {
/*
自动释放池:多个自动释放池
如:一个时间循环系统就会自动为我们分配一个自动释放池
系统以栈的形式管理自动释放池 最新创建的自动释放池会放在该栈的最顶层
ios中的对象 如 NSMutableString * pool =[[[NSMutableString alloc] init] autorelease];
只要调用了autorelease方法 那么他就会自动添加到离他最近的自动释放池中
当自动释放池销毁时 池中的所有对象都会被release一次
release:对象的引用计数立即-1
autorelease:对象的引用计数延迟一会再-1 该对象所在的自动释放池销毁的时候-1
*/
Person *p = [[[Person alloc] init] autorelease];
NSLog(@"%@",p);
}//单步执行会在这里释放
return 0;
}
-(void)dealloc
{
NSLog(@"%@ dealloc",[self class]);
[super dealloc];
}
-(NSString *)description
{
NSMutableString *str =[[[NSMutableString alloc] initWithString:@"Person"] autorelease];
// 如果不加autorelease,内存泄露
//加方法 不用手动管理内存
//NSMutableString *str =[NSMutableString stringWithString:@"Person"];
return str;
}