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.