为了账号安全,请及时绑定邮箱和手机立即绑定

为什么ARC仍然需要@autoreleasepool?

为什么ARC仍然需要@autoreleasepool?

千万里不及你 2019-07-31 15:38:27
为什么ARC仍然需要@autoreleasepool?在大多数情况下使用ARC(自动引用计数),我们不需要考虑使用Objective-C对象的内存管理。不允许再创建NSAutoreleasePools,但是有一个新的语法:@autoreleasepool {     …}我的问题是,当我不应该手动释放/自动释放时,为什么我需要这个呢?编辑:总结我从所有的答案和评论中得到的简洁:新语法:@autoreleasepool { … } 是新的语法NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];…[pool drain];更重要的是:ARC使用autorelease以及release。它需要一个自动释放池才能这样做。ARC不会为您创建自动释放池。然而:每个Cocoa应用程序的主线程都有一个自动释放池。有两种情况你可能想要使用@autoreleasepool:当您在辅助线程中并且没有自动释放池时,您必须自己制作以防止泄漏,例如myRunLoop(…) { @autoreleasepool { … } return success; }。当你想创建一个更本地的游泳池时,正如@mattjgalloway在他的回答中所示。
查看完整描述

3 回答

  • 3 回答
  • 0 关注
  • 1414 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信