NSString是否从NSArray objectAtIndex返回为自动释放或保留

时间:2011-12-06 18:04:24

标签: objective-c nsstring nsarray retain autorelease

我有一个从数组返回的字符串,只是想知道我是否需要在使用后释放它。

3 个答案:

答案 0 :(得分:4)

看一下这篇博客文章,该文章总结了Objective C内存管理规则:http://interfacelab.com/objective-c-memory-management-for-lazy-people/

特别是,规则#1适用于此 - 如果您拥有它,则只需要释放一个对象,如果您分配,复制或新建它(或者如果您明确保留它),则需要拥有它。你没有做任何这些事情,所以你不需要发布它。

它是否自动释放取决于字符串最初创建的方式,但您不必担心,因为您不负责释放它。

答案 1 :(得分:1)

-objectAtIndex:返回的对象在技术上都是。

代码看起来像这样:

 -(id) objectAtIndex:(NSUInteger) index
 { 
      return [[objects_[index] retain] autorelease];
 }

所以它们不属于你,但是如果你从数组中删除它,它将不会立即被释放。

答案 2 :(得分:0)

自动释放。

那是(几乎?)一个方法返回的任何对象,如果它不是,它会使内存管理过于复杂。这就是为什么我们都喜欢自动释放。