取消分配自定义对象的NSMutableArray

Dav*_*ave 1 memory-management objective-c nsmutablearray dealloc

我需要帮助解除我的自定义对象的NSMutableArray.我需要保留数组,所以我在.h中添加了一个属性,然后在.m文件的dealloc中释放它.当我向数组添加对象时,我执行以下操作:

  myarray = [[NSMutableArray alloc] init];
  [myarray addObject:[[mycustomObject alloc]initWithObject:obj1]];
  [myarray addObject:[[mycustomObject alloc]initWithObject:obj2]];
Run Code Online (Sandbox Code Playgroud)

现在,我不知道如何发布mycustomobject.如果我执行以下操作:

   [myarray addObject:[[[mycustomObject alloc]initWithObject:obj1] autorelease]];
Run Code Online (Sandbox Code Playgroud)

我稍后访问数组时会遇到问题.请指教.

Lou*_*arg 5

我不认为你理解Cocoa中的内存管理是如何工作的.该数组将保留您添加到其中的对象,并且当阵列不再需要它们时(例如,当您释放阵列时)它将自行释放它们.

换句话说,将自动释放的对象添加到数组中,之后不要担心它的保留计数.如果要将其从阵列中删除,只需将其删除(使用removeObjectAtIndex:或类似的东西).如果您认为要在不从阵列中删除对象的情况下释放该对象,那么您做错了,因为这可能会在您的阵列中留下一个悬空指针,这会导致您稍后崩溃.

你应该真的重新阅读文档,特别是关于对象所有权和处置的部分.