ARC中autoreleasepool的使用

在 MRC 的年代,autoReleasePool 是必学的内容,但是进入到 ARC 的时代之后,编译器会自动加入retain, release 和 autorelease 代码, autoReleasePool 越来越没有存在感了,难道它真的就是没有用了么?如果没用了为什么苹果还要保留@autoreleasepool{}这种使用方式呢?

下面是 apple 官方关于 autoReleasePool 的描述

Using Autorelease Pool Blocks
Apple官方autorelease pool译文

文档说的已经很清楚了,autoReleasePool 主要是为了解决内存峰值的问题的,如果在一个 for 循环里面创建了大量的对象,很容易因为内存不足而崩溃,这个时候我们可以使用如下代码来缓解

for (int i = 0; i++; i<5000000) {
@autoreleasepool {
NSString *string = [NSString stringWithFormat:@"string %@", @(i)];
}
}

参考

@AUTORELEASEPOOL
黑幕背后的Autorelease


好吧,这篇文章纯属是充数的。。。