0

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

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

例如:

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

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

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

4

2 回答 2

2

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

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

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

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

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

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

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

于 2010-07-29T21:23:14.873 回答
2

只有一个规范参考:Apple 的Cocoa 或 iPhone内存管理指南

于 2010-07-29T22:30:50.123 回答