ios @autoreleasepool的使用场景

什么时候使用@autoreleasepool ?

  1. 写基于命令的程序时,就是没有UIKit框架,例如appkit、cocoa框架时。
  2. 写循环,循环里包含大量的临时变量创建时。
  3. 创建新的线程任务。(非cocoa程序创建时才需要)
  4. 长期在后台运行的任务。

方便是方便了,但是有些情况下,我们还是需要手动创建自动释放池,那么,什么时候呢?

如果你正在编写不基于UI 框架的程序,比如命令行工具。
如果你编写的循环创建了很多临时对象。 
你可以在循环中使用自动释放池block,在下次迭代前处理这些对象。在循环中使用自动释放池block,有助于减少应用程序的内存占用。
你生成了一个辅助线程。 
一旦线程开始执行你必须自己创建自动释放池。否则,应用将泄漏对象。
这是苹果文档中的翻译,按我的理解,最重要的使用场景,应该是有大量中间临时变量产生时,避免内存使用峰值过高,及时释放内存的场景。 
这个for循环里如果不使用@autoreleasepool,那临时变量内存可能是爆发式的,但是使用了@autoreleasepool,在每个@autoreleasepool结束时,里面的临时变量都会回收,内存使用更加合理。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值