如果我使用 [NSString StringWithFormat] 创建一个字符串,我是否必须 [保留] 它?我的理解是方便的方法将对象添加到自动释放池中。如果是这种情况,我们是否应该保留该对象,以便它不会在事件循环结束时被池耗尽?
问问题
429 次
1 回答
1
如果字符串应该在当前函数之外持续存在,那么是的,需要它的对象应该保留它。这是英语措辞看似微不足道但实际上隐藏了一个关键概念的地方之一。而不是说“我必须保留它吗?” 或(正如我最初写的)“如果您希望字符串持久存在”,则用保留字符串的对象来说话。不同之处在于后者表达了所有权的概念(注意:Apple 文档在谈到所有权时使用“你”,但它是第三人称中性“你”而不是第二人称“你”)。当然,如果您将字符串存储在属性中,然后为您处理保留(或复制)。除非您需要针对旧版本的 OS X(10.4 和更早版本),否则您通常应该使用属性。
标准集合拥有它们包含的对象,因此保留它们。当一个元素从集合中移除时,集合会释放该元素(注意:它们不会自动释放,因此如果对象没有其他所有者,则该对象将被销毁)。在“共享对象的有效性”中阅读有关此主题的更多信息。Apple 的内存管理文档应该告诉你你需要知道的一切。
于 2010-04-05T00:30:14.580 回答