我在我的一个类中定义了一个常量数组:
static const float values[] = {-0.5f, -0.33f, 0.5f, -0.33f, -0.5f, 0.33f,};
在我的类的dealloc方法中,我是否需要释放此字段占用的内存?我该怎么做?我应该使用NSArrays吗?
答案 0 :(得分:3)
不,你永远不需要释放静态分配的数组。它在进程启动时由系统分配,并保持在范围内直到它退出。
就此而言,你也不需要非静态数组,因为它包含在类中,因此与类一起生存和死亡。
你唯一需要担心生命周期的时候是在堆上分配数组时,这对const
值数组来说有点棘手:
const float *make_values() {
float *v = (float *)malloc(6*sizeof(float));
v[0] = -0.5f;
v[1] = -0.33f;
...
return v;
}
const float *values = make_values();
只有这样你才不得不担心在某个时候释放内存,然后你可能要考虑使用带保留语义的NSArray属性。