关于何时在 Objective-C 中发布的参考

Posted

技术标签:

【中文标题】关于何时在 Objective-C 中发布的参考【英文标题】:Reference on when to release in Objective-C 【发布时间】:2010-07-29 21:17:17 【问题描述】:

我在 Objective-C 中遇到了一个反复出现的问题。我要么发布太多时间,要么不够。或者也许我没有保留足够的他们......

有人可以为我指出一个很好的参考资料,在我需要保留和释放时给我一个经验法则吗?

例如:

我记得在某处读到一些对象是预先保留的,所以我需要释放它们,但不保留它们。这些是什么物体?

如果我分配一个对象并且只在那个方法中需要它,我需要释放它吗?保留吗?

显然,如果我保留了一些东西,我需要释放它,但除此之外,我有点迷失了。

【问题讨论】:

【参考方案1】:

规则通常很简单。如果您通过以下方式之一获取对象:

id obj = [[MyObject alloc] init];
id obj = [myObject retain];
id obj = [myObject copy];
id obj = [myObject mutableCopy];

然后你需要在某个时候释放它——通常在相同的方法中,或者你的dealloc 方法中。换句话说,平衡您对allocretaincopymutableCopy 的调用与匹配的release 调用。

我记得在某处读到一些对象是预先保留的,所以我需要释放它们,但不保留它们。这些是什么物体?

这种情况很少发生。被调用方法的文档应指定您负责释放返回的对象;否则,你应该假设你正在接收一个自动释放的对象。

如果我分配一个对象并且只在那个方法中需要它,我需要释放它吗?保留它?

是的,您需要释放它(但您不需要保留它)。 (如果您只打算在该方法中使用它,您也可以使用返回自动释放对象的便捷方法之一。)

【讨论】:

啊,我在自动保留方面考虑的是分配有效保留(在释放方面)...【参考方案2】:

只有一个规范参考:Apple 的 Memory Management Guide 用于 Cocoa 或 iPhone。

【讨论】:

以上是关于关于何时在 Objective-C 中发布的参考的主要内容,如果未能解决你的问题,请参考以下文章

如何知道大 O 何时是对数?

Objective-C属性和综合逻辑

关于 Objective-C 中的私有实例变量

在objective-c中声明重用协议的位置

Objective-C中如何创建构造函数呢?

何时在 Swift 中使用 @objc?