关于何时在 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
方法中。换句话说,平衡您对alloc
、retain
、copy
和mutableCopy
的调用与匹配的release
调用。
我记得在某处读到一些对象是预先保留的,所以我需要释放它们,但不保留它们。这些是什么物体?
这种情况很少发生。被调用方法的文档应指定您负责释放返回的对象;否则,你应该假设你正在接收一个自动释放的对象。
如果我分配一个对象并且只在那个方法中需要它,我需要释放它吗?保留它?
是的,您需要释放它(但您不需要保留它)。 (如果您只打算在该方法中使用它,您也可以使用返回自动释放对象的便捷方法之一。)
【讨论】:
啊,我在自动保留方面考虑的是分配有效保留(在释放方面)...【参考方案2】:只有一个规范参考:Apple 的 Memory Management Guide 用于 Cocoa 或 iPhone。
【讨论】:
以上是关于关于何时在 Objective-C 中发布的参考的主要内容,如果未能解决你的问题,请参考以下文章