NSMutableArray освободить объект по индексу - PullRequest
0 голосов
/ 12 октября 2011

Я создаю свой NSMUtableArray следующим образом:

self.myArray = [NSMutableArray array];

    for (int i = 0; i < number; i++) {
        [self.myArray addObject:[NSNull null]];
    }

Затем я добавляю объект в массив с заданным индексом, например так:

[self.myArray replaceObjectAtIndex:myIndex withObject:myObj];

Поскольку myArray содержит объекты довольно большого размера (изображения), я хочу иметь возможность освободить память, освободив неиспользуемые объекты (myArray содержит данные изображений для использования в UIScrollView).

Каким будет правильный способ освободить член NSMutableArray по заданному индексу? Я думал об использовании:

[self.myArray replaceObjectAtIndex:myIndex withObject:[NSNull null]];

1 Ответ

1 голос
/ 12 октября 2011

Массив освободит любой объект, который в данный момент имеет этот индекс, когда вы замените объект. Так что если вы заменяете свой большой объект чем-то вроде [NSNull null], это должно делать то, что вы хотите.

Обратите внимание, что память для объекта, который был освобожден, фактически не будет освобождена, если счет сохранения не будет равен 0. Если есть другие ссылки на объект, т. Е. Любое другое место в коде, где вы его сохранили, это будет держаться вокруг. Если массив является единственной вещью, сохраняющей объект, вы должны быть в порядке.

...