objective-c - 清除/释放数组数组的正确方法

标签 objective-c cocoa

再次是我的数组数组......

当我的数组“x”包含数组“y”的多个实例时,如何清除/释放它而不冒内存泄漏的风险?

以下调用是否足够?

(a) 清除数组

[x removeAllObjects];

(b) 释放数组

[x release];

或者我是否需要枚举数组,例如:

(c) 清除数组

for(int i=0;i<x.count;i++)
    [[x objectAtIndex:i] release];
    [x removeAllObjects];

(d) 释放数组

for(int i=0;i<x.count;i++)
    [[x objectAtIndex:i] release];
    [x release];

提前致谢

最佳答案

(b) 应该足够了。数组的释放器将释放所有包含的对象,并为每个保留释放一次(因此多个实例将被释放与添加的次数一样多)。

永远不要执行[[x objectAtIndex:i] release]——您还没有保留返回的对象,因此释放它会破坏它的保留计数。

关于objective-c - 清除/释放数组数组的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2844328/

相关文章:

Objective-C—— undefined symbol

iphone - iPhone 的颠倒界面

Cocoa:对使用 CoreData 和 Bindings 与 UI 对象交互感到困惑

objective-c - 获取当前键盘光标位置

ios - UITextField 删除 "..."

objective-c - 使用正则表达式搜索 NSString

ios - 在设备重启时启动iOS应用

ios - 从 locationManager :didUpdateLocations using CoreLocation 获取纬度/经度

ios - 二维数据高效存储,实现 "rotation"的行列数据

cocoa - Mac 上的 UITouch 等效项