创建和使用autoreleasepool的代码示例
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
// 在autoreleasepool块内创建自动释放对象
NSString *string = [[NSString alloc] initWithFormat:@"Hello, AutoreleasePool"];
NSLog(@"%@", string);
}
return 0;
}
语法结构说明
- @autoreleasepool块:在Objective-C中,使用
@autoreleasepool
关键字来定义一个自动释放池块。在块内创建的自动释放对象(例如通过alloc
、new
、copy
、mutableCopy
创建后调用autorelease
方法的对象,或者像stringWithFormat:
这种类方法创建的对象),会被添加到最近的自动释放池中。
- 对象管理:当自动释放池被销毁时(即块结束时),池中的所有对象会收到
release
消息,从而释放其占用的内存。这样可以有效地管理内存,避免在创建大量临时对象时造成内存峰值。在main
函数中,全局的自动释放池会在每次事件循环时清空,但对于一些循环中创建大量临时对象的情况,手动创建局部的autoreleasepool
块有助于及时释放内存。