简体   繁体   English

发布数组Objective-C

[英]releasing arrays objective-c

In Objective-c I have this: 在Objective-c中,我有以下内容:

SomeObject *values[3][3];

when deallocating, as in C++ should I release element by element? 取消分配时,如在C ++中一样,应该逐个释放元素吗?

Or if I do: 或者,如果我这样做:

[values release];

is ok? 可以吗

release only applies to Objective-C objects. release仅适用于Objective-C对象。 AC style array (like you have there) is just some stack memory. AC样式数组(就像您在那儿一样)只是一些堆栈内存。

In your case, it looks like you're using it to store 3x3=9 Objective-C objects in it. 就您而言,您似乎正在使用它在其中存储3x3 = 9个Objective-C对象。 If you want to release them all, you need to do it element by element. 如果要全部释放它们,则需要逐个元素地进行操作。 The C++ analogy doesn't hold in this case because the array itself isn't an Objective-C object. 在这种情况下,C ++类比不成立,因为数组本身不是Objective-C对象。

(If you were holding stuff in an NSMutableArray, the answer would be different. You should look into that by the way.) (如果您将内容保存在NSMutableArray中,答案将有所不同。您应该顺便调查一下。)

It is an array of pointers. 它是一个指针数组。 Just values points to first object, so [values release] will release only first object. 只是values指向第一个对象,因此[values release]将仅释放第一个对象。 You have to release each object in array. 您必须释放数组中的每个对象。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM