通常,如果生成后台线程或在NSOperationQueue上运行NSOperation,则需要为该线程或操作创建NSAutoreleasePool,因为默认情况下不存在NSAutoreleasePool.

相同的规则是否适用于放置在Grand Central调度队列中并将在非主线程上运行的块?也就是说,您是否需要在分配给主队列以外的任何对象的每个块中创建NSAutoreleasePool?

在我有限的测试中,我看不到自动删除对象的控制台警告,这通常是在后台线程或NSO操作中看到的.然而,我似乎找不到关于这一点的明确文件,所以我想知道是否有人能指出这是在哪里陈述的.

推荐答案

同样的规则适用于块吗

Grand central dispatch将自动管理每个队列的自动释放池.然而,无法保证何时将水池排干;它可能是在一个块被处理之后,也可能是在数百块之后(但可能不会).

所以,如果你只分配了几个对象,不用担心.但是,如果要分配任意数量的对象(而且由于目标是内存受限的环境),则应该创建和排空池.


文件已经更新.

看见

如果块创建了多个Objective-C对象,则可能

Objective-c相关问答推荐

如何在 NSImage CIFilter ObjC 周围创建边框

如何限制 UITextField 中的特殊字符(点和下划线除外)?

Objective C 中的多个委托

如何打印 NSMutableURLRequest?

如何在for (id item in items)objective-c 循环中获取数组索引?

如何声明仅调试语句

为什么 UICollectionView 的 UICollectionViewCell 没有在用户时突出显示?

NSLocalizedString 格式

如果用户点击屏幕键盘,我如何关闭键盘?

Objective C 静态类变量

如何测试生产推送通知?

了解按位与运算符

iPhone - 什么是重用标识符(UITableViewCell)?

iOS:如何将 UIViewAnimationCurve 转换为 UIViewAnimationOptions?

Cocoa 与 Cocoa Touch - 有什么区别?

Select 时 UITableViewCell 复选标记更改

iPhone:在 UITextField 上禁用 Auto-Cap/autocorrect 问题

如何像在 Spotify 的播放器中一样创建居中的 UICollectionView

CMTime 秒输出

带有 UIImage 的 UIBarButtonItem 始终着色 iOS 7