【发布时间】:2011-12-06 18:04:23
【问题描述】:
我有一个从数组返回的字符串,只是想知道是否需要在使用后释放它。
【问题讨论】:
标签: objective-c nsstring nsarray retain autorelease
我有一个从数组返回的字符串,只是想知道是否需要在使用后释放它。
【问题讨论】:
标签: objective-c nsstring nsarray retain autorelease
看看这篇博文,它很好地总结了 Objective C 内存管理的规则:http://interfacelab.com/objective-c-memory-management-for-lazy-people/。
特别是,规则 #1 在这里适用 - 如果你拥有一个对象,你只需要释放它,如果你分配、复制或新建它(或者如果你明确地保留它),你就拥有它。你没有做任何这些事情,所以你不需要释放它。
是否自动释放取决于字符串最初是如何创建的,但您不必担心,因为您不负责释放它。
【讨论】:
从-objectAtIndex: 返回的对象在技术上是两者。
代码如下所示:
-(id) objectAtIndex:(NSUInteger) index
{
return [[objects_[index] retain] autorelease];
}
所以它们不属于你,但如果你从数组中删除它,它不会立即被释放。
【讨论】:
自动释放。
这与(几乎?)方法返回的任何对象一样,如果不是,它会使内存管理过于复杂。这就是我们都喜欢自动释放的原因。
【讨论】:
+new、+alloc 和 -init 我的头脑中没有遵守这些规则。
+new、+alloc 和+init 创建的对象