освобождение массивов цель-с - PullRequest
1 голос
/ 26 марта 2010

В Objective-C у меня есть это:

SomeObject *values[3][3];

при освобождении, как в C ++ я должен освобождать элемент за элементом?

Или если я сделаю:

[values release];

в порядке?

Ответы [ 2 ]

7 голосов
/ 26 марта 2010

release применяется только к объектам Objective-C. Массив в стиле C (как у вас там) - это просто стековая память.

В вашем случае, похоже, вы используете его для хранения в нем объектов 3x3 = 9 Objective-C. Если вы хотите выпустить их все, вам нужно сделать это поэлементно. Аналогия с C ++ в этом случае не выполняется, поскольку сам массив не является объектом Objective-C.

(Если бы вы держали вещи в NSMutableArray, ответ был бы другим. Вы должны рассмотреть это кстати.)

0 голосов
/ 26 марта 2010

Это массив указателей. Просто values указывает на первый объект, поэтому [values release] освободит только первый объект. Вы должны освободить каждый объект в массиве.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...