从 NSArray 返回的自动释放对象?
Posted
技术标签:
【中文标题】从 NSArray 返回的自动释放对象?【英文标题】:Autorelease object returned from NSArray? 【发布时间】:2010-10-25 18:44:03 【问题描述】:我正在编写一个NSArray
类别以包含-objectAtRandom
消息,该消息从随机索引返回一个对象(类似于Python 的choice)。
我应该在返回之前自动释放这个对象吗?我相信我不应该,但我不确定......
【问题讨论】:
【参考方案1】:根据正常的内存管理规则,不,你不应该。由于您大概使用objectAtIndex:
来返回对象,因此您不需要自己进行任何内存管理。
【讨论】:
【参考方案2】:我会写return [[object retain] autorelease]
- 这将保证,即使数组将被释放,用户也将能够使用对象直到当前的 runloop 循环完成。
【讨论】:
这不是必需的。 NSArray 保持强引用,直到它从数组中删除。如果开发人员删除了数组,可能应该明白他们可能会释放它包含的所有对象。 @adam 所以如果用户想确保他不会以对对象的无效引用结束,他应该保留它并在完成后释放它? 对。你可以做任何你想做的事,但是一旦你的代码释放了控制权,如果你想以后使用它,你必须保留这个对象。如果您只在本地范围内使用该对象,则实际上不需要保留它。以上是关于从 NSArray 返回的自动释放对象?的主要内容,如果未能解决你的问题,请参考以下文章
从 NSArray objectAtIndex 返回的 NSString 是自动释放还是保留