自动释放池:NSAutoreleasePool类
当你创建对象不想立即释放的时候可以使用autoreleasepool,那么会把对象的所有权交给最近的NSAutoreleasePool对象
autoreleasepool控制 使用autorelease对象的释放,这个对象何时释放,取决于这个autoreleasepool
1.新的 @autoreleasepool
@autoreleasepool {
Person *person4 = [[Person alloc] init];
[person4 retain];
[person4 release];
}
2.老的autoreleasepool创建方法
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
Person *person3 = [[Person alloc] init]; //person3 alloc 之后引用计数为 1
[person3 retain]; //person3 引用计数为 2,
NSLog(@"person3 = %lu",person3.retainCount);
[person3 autorelease]; //在自动释放池释放时引用计数才会减 1.
[pool release];
NSLog(@"person3 = %lu",person3.retainCount);