iphone - 关于自动释放/释放使用的另一个 iOS 内存管理说明

标签 iphone objective-c ios iphone-sdk-3.0

<分区>

Possible Duplicate:
Is it better to autorelease or release right after?

(前瞻:请不要用ARC来讨论这个话题)

我们公司内部有一个争论,话题是autorelease/early-release的用法。让我解释一下。

场景 1:

NSArray *tempArray = [[NSArray alloc] init];
self.myRetainingProperty = tempArray;
[tempArray release];

场景 2:

self.myRetainingProperty = [NSArray array]; // or [[[NSArray alloc] init] autorelease];

基本上这两种情况都很好,但我很好奇社区使用这些情况的方法是什么?我更喜欢“尽快释放”(场景 1)——尤其是在内存可能很宝贵的 iOS 上,但另一方面,一个自动释放的对象(场景 2)一直存在到下一个运行循环周期不会放太多强调内存占用。

所以我的问题是您更喜欢哪一个,或者有没有 Apple 推荐的方法?

再一次:请让我们暂时忽略 ARC :) ...

谢谢。

最佳答案

就内存使用而言,它们是等效的。唯一的区别是自动释放池的大小。当您将它们分配给一个属性时,当您释放它时,对象不会被释放,因此内存差异的差异将是在自动释放池中存储一个条目。自动释放池中有一点开销,但在这些类型的情况下通常可以忽略不计。您应该做感觉自然的事情,以及使代码易于阅读/维护的事情。

关于iphone - 关于自动释放/释放使用的另一个 iOS 内存管理说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8150214/

上一篇:ios - UIBarButtonItem 让我的 iPhone 应用崩溃

下一篇:iphone - pushViewController 动画对我不起作用

相关文章:

ios - 如何使用 appium 从 iPhone 启动已安装的应用程序

ios - Google Analytics - 如何在 ios 中为事件发送多个维度

ios - 动态生成按钮时应用程序移动缓慢

android - APN 测试仪推送通知

iphone - 如何在 iOS 中重用代码(IBAction)?

iphone - 在 Three20 中使用 CATransition?

iphone - 有没有开源的动画库?

objective-c - 构建 iOS 应用程序后退出代码 1 错误

objective-c - 在 AppDelegate 中存储、访问和编辑字符串

ios - 如何像这个截图一样在 Swift 中设置半圆的 UIImage