什么时候用@autoreleasepool
写基于命令行的的程序时,就是没有UI框架,如AppKit等Cocoa框架时。
写循环,循环里面包含了大量临时创建的对象。(本文的例子)
创建了新的线程。(非Cocoa程序创建线程时才需要)
长时间在后台运行的任务。
- for循环中创建了大量的临时变量得不到释放造成内存崩溃
for (int i = 0; i < someLargeNumber; i++) {
@autoreleasepool {
NSString *string = @”Abc”;
string = [string stringByAppendingString:@"123"];
NSLog(@“%@”, string);
}
}
网友评论