当前位置:  开发笔记 > IOS > 正文

NSMutableArray内存管理

如何解决《NSMutableArray内存管理》经验,为你挑选了2个好方法。

将对象添加到数组时,它会调用retain该对象.如果你没有释放指向该对象的指针,那将是一个泄漏.当你释放数组时,它会调用release它所拥有的所有对象,因为它retain之前已经调用过.

至于autorelease vs release,唯一可以确定的方法(除了可能阅读文档之外)是通过方法的名称.我相信一般的规则是,如果你没有分配对象,那么你不负责释放它.

关于所述对象创建方法中,所有的方便的方法(array:,arrayWithObjects:,arrayWithArray:等等)返回自动释放物体.然而,其相应的初始化方法(init:,initWithObjects:,initWithArray:,等)不-如果你打电话给他们,你是负责调用release返回的对象.

我似乎在这里回忆一些关于这个主题的其他问题 - 你可以尝试四处寻找更彻底的解释.



1> Andy..:

将对象添加到数组时,它会调用retain该对象.如果你没有释放指向该对象的指针,那将是一个泄漏.当你释放数组时,它会调用release它所拥有的所有对象,因为它retain之前已经调用过.

至于autorelease vs release,唯一可以确定的方法(除了可能阅读文档之外)是通过方法的名称.我相信一般的规则是,如果你没有分配对象,那么你不负责释放它.

关于所述对象创建方法中,所有的方便的方法(array:,arrayWithObjects:,arrayWithArray:等等)返回自动释放物体.然而,其相应的初始化方法(init:,initWithObjects:,initWithArray:,等)不-如果你打电话给他们,你是负责调用release返回的对象.

我似乎在这里回忆一些关于这个主题的其他问题 - 你可以尝试四处寻找更彻底的解释.


这是正确的 - 数组处理所有这些.

2> Chuck..:

将Objective-C内存管理视为所有权而不是保留释放更容易.将对象添加到数组时,该数组现在是该对象的共同所有者,并负责正确管理内存.当所有者(任何对象包含您发布的代码)调用release对象时,它将放弃所有权,现在该数组是唯一的所有者.

Apple对Cocoa中的所有权如何运作有一个很好的入门(包括你如何知道你何时负责调用release一个对象):Cocoa的内存管理编程指南.如果你想使用Cocoa,这是必读的.

推荐阅读
U友50081205_653
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有