繁体   English   中英

内存管理,目标c

[英]Memory management, objective c

假设有一个NSSTring类型的字符串

      NSString *string;

有一个叫做testArray的数组,它是字符串对象的数组

      string=[testArray objectAtIndex:1];

我们需要给吗

      [string release]

或不?

不..在这种情况下不是。

如果从函数中获取字符串,则该字符串通常具有自动释放标志,并将在以后释放。

你需要释放它,如果你retain它,如果你alloc ,或copy它。

您应该阅读: http : //developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/MemoryMgmt/Articles/mmRules.html#//apple_ref/doc/uid/20000994-BAJHFBGH

在这种情况下,您不必释放字符串。 您只释放自己拥有的对象(通过alloc / init,复制或保留创建)。 查看Apple的内存管理文档。 在这种情况下,testArray拥有该字符串。 因此,它会在不再需要时将其释放

不,你不需要

[string release]

仅当为对象分配内存时,才必须release对象。 检查此内存管理策略以获取有关分配和释放的更多详细信息。

无需释放。 您只需要释放已分配的对象。

仅当您还调用了[字符串保留]时。 否则,内存由NSArray管理。 如果您需要将其从数组中删除,则可以调用[字符串保留],但仍保留对其的引用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM