iphone - 我什么时候应该将我的代码包装到自动释放池中

标签 iphone objective-c memory-management autorelease

我是 objective-c 的新手,我知道基本的内存管理规则,比如什么时候 retain release autorelease。但是我不知道什么时候应该将我的代码包装到自动释放池中,为什么?

最佳答案

与其他性能优化一样,如果您注意到高内存使用率和分析(例如使用 Instruments)导致您将额外的自动释放池作为解决方案,您通常应该只向您的代码添加额外的自动释放池。

也就是说,您可以将创建大量临时对象的代码包装在自动释放池中的紧密循环中。默认的自动释放池在运行循环周期结束时被耗尽。因此,如果您在代码中的 for 循环的每次迭代中创建大量临时对象,默认的自动释放池将不会被耗尽,直到您的整个循环运行完毕,这意味着您创建的所有临时对象可以加起来临时内存使用率高(有时称为“高水位线”)。您可以将循环的每次迭代包装在 @autoreleasepool 中,以便更快地释放在该循环迭代中创建的不需要的、自动释放的临时对象。

关于iphone - 我什么时候应该将我的代码包装到自动释放池中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10573387/

相关文章:

iphone - iPhone 中单个文件的最大大小是多少?

iphone - iOS 中的 NSCachesDirectory 和 NSDownloadsDirectory 有什么区别?

objective-c - 具有管理员权限的用户无法将证书添加到系统钥匙串(keychain),MacOS

objective-c - 将 Swift 类导入 Objective C

objective-c - 自定义 NSObject 类,实例化为 [CustomObj customObjWithData :data]

c - 如何正确重新分配?

iphone - 解析包含多个对象的 JSON 字符串

ios - 如何在 ios 中处理大文件上传?

ios - 已取消订阅 channel ,但仍在 channel 中

c - 如何使用指针将结构写入一 block 内存