Objective C数组和对象发布

dav*_*vid 7 arrays memory-management objective-c

我有一个关于何时释放NSArray元素的新手问题.请参阅以下伪代码:

NSMutalbeArray *2DArray = [[NSMutableArray alloc] initWithCapacity:10];
for (int i=0;i<10;i++) {
  NSMutableArray *array = [[NSMutableArray alloc] initWithCapacity:5];
  for (int j=0;j<5;j++) {
    MyObject *obj = [[MyObject alloc] init];
    [array addObject:obj];
    [obj release];
  }

  [2DArray addObject:array];
  [array release];
}
// use 2DArray to do something

[2DArray release]
Run Code Online (Sandbox Code Playgroud)

我的问题是,当我发布2DArray时,我是否需要先显式释放每个元素(数组)?另外,在我发布"数组"对象之前,我是否需要首先释放它的每个元素(MyObject)?

我是Objective C的新手.请帮助.谢谢.

Chr*_*ong 15

不,你不需要告诉每个对象是released.当您向a发送release方法时NSArray,它会自动向release每个项目内部发送一个方法.

所以在你的情况下,你发送[2DArray release].这会自动发送[array release]到每个其他数组,该数组发送到每个数组[obj release]内的每个对象array.