Skip to content

Latest commit

 

History

History
16 lines (8 loc) · 950 Bytes

content.md

File metadata and controls

16 lines (8 loc) · 950 Bytes

你的遍历方法用对 @autoreleasepool 了么

作者: 高老师很忙

在每次遍历的时候生成了很多占内存大的对象,如果交于默认的 autoreleasepool 去管理生命周期,会有因为内存飙升产生crash的风险,这个时候我们就需要手动控制这些对象的生命周期。也就是需要在适当的位置上去使用 @autoreleasepool()

系统为我们提供了很多的遍历方法,比如说for循环for-inenumerateObjectsWithOptions:dispatch_apply等方法,那有的同学就说都加上吧,就出现了下面这段代码:

虽然说这样写也没什么异常,但是这里真的有必要加么?其实快速遍历这几个方法系统自动为我们添加了 autoreleasepool 方法,从文档里可以看到蛛丝马迹:

不过,其他方法都需要加上 @autoreleasepool() 哈!