возвращая NSArray и освобождая его - PullRequest
1 голос
/ 14 сентября 2011

У меня есть этот classA, в котором есть метод, который вызывается из другого класса B для получения координат спрайта.

когда я вызываю этот метод в classA, он возвращает NSMutablearray, но затем я хочу освободить этот массив. так что, если я выпущу classA, это нормально? все выделенные массивы в нем являются releaseD? НЕТ .. или я должен освободить массив в dealloc вызываемого класса A?

gameHandler.m
-(NSMutableArray*)stand2_Co
{
...
return myArray
}

, а затем вызвать его из другого класса:

theLevel=[[gameHandler alloc] init];
..
..
int theNumber = [   [ [theLevel stand2_Co] objectAtIndex:0] integerValue];

[theLevel release];

если я выпускаю gameHandler, мне нужно также освободить этот массив? если да, то когда мне это сделать?

Большое спасибо.

Ответы [ 3 ]

1 голос
/ 14 сентября 2011

Вы должны release все объекты вашего класса, которые были retained или allocated в нем.

Если вы используете некоторые объекты из другого класса, вы должны retain их, чтобы быть увереннымичто они будут живы во время вашей работы в этом классе.

1 голос
/ 14 сентября 2011

Я бы предложил запустить инструмент Analyzer и тестер утечки памяти, чтобы убедиться, что ничего не происходит.Я бы посоветовал вам освободить массив thEdit специально для вашего ClassA.Все, что выделено, также должно быть освобождено либо вызывающим, либо распределителем.

0 голосов
/ 14 сентября 2011
  • Вам принадлежит любой созданный вами объект

Вы создаете объект с помощью метода, имя которого начинается с «alloc», «new», «copy» или «mutableCopy».»(Например, alloc, newObject или mutableCopy).

  • Когда он вам больше не нужен, вы должны отказаться от владения принадлежащим вам объектом

Вы отказываетесь от права собственности на объект, отправляя ему сообщение об освобождении или сообщение об автоматическом выпуске.Поэтому в терминологии Какао отказ от владения объектом обычно называется «освобождением» объекта.

  • Вы не должны отказываться от владения объектом, которым вы не владеете

Это всего лишь следствие предыдущих правил политики, сформулированных в явном виде.

Руководство по программированию управления памятью

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