dre*_*yln 1 objective-c autorelease nsmutablearray
场景 - 我有一个方法返回从NSMutableArray检索的对象,类似于下面的代码(已经简化了)(假设"myArray"和"currentIndex"是该方法所在的类的iVars):
- (MyObject *)getFromArray
{
return [myArray objectAtIndex:currentIndex];
}
Run Code Online (Sandbox Code Playgroud)
我应该这样打电话给自动释放吗?
- (MyObject *)getFromArray
{
return [[myArray objectAtIndex:currentIndex] autorelease];
}
Run Code Online (Sandbox Code Playgroud)
我知道数组在返回所述对象时会在对象上调用自动释放,但我的理解是自动释放的对象仅在调用者范围的持续时间内有效,在本例中为上述方法.因此,如果确定有问题的对象对我的方法的调用者有效,那么自动释放(如上面第二个代码片段所示)是否正确?只是试图确保我对自动释放如何工作的推理和理解是正确的.
谢谢!
我是否应该致电自动释放?
没有!始终遵循简单的内存管理规则:如果你不拥有它(通过alloc,new,copy,或retain),你不能(自动)释放它.
我知道数组在返回所述对象时会在对象上调用自动释放
这个假设是错误的.该数组只返回该对象,它不会释放它.(它实际上可能会调用[[... retain] autorelease]该对象,但这是另一回事.)当从数组中删除对象或者数组本身被释放时,该数组将仅释放该对象.
| 归档时间: |
|
| 查看次数: |
1567 次 |
| 最近记录: |