Невозможно освободить объект - PullRequest
0 голосов
/ 08 ноября 2011

У меня есть очень простой класс под названием Профиль.Он содержит NSMutableArray, называемый avatar, который, в свою очередь, содержит UIImages.Этот NSMutableArray объявлен как неатомарный, сохраняйте свойство.Он размещается в методе init профиля следующим образом:

avatar    = [[NSMutableArray alloc] initWithObjects:
                 [UIImage imageNamed:@"image1.png"], 
                 [UIImage imageNamed:@"image2.png"],
                 [UIImage imageNamed:@"image3.png"],
                 [UIImage imageNamed:@"image4.png"],
                 [UIImage imageNamed:@"image5.png"],nil] ;

и высвобождается в методе dealloc профиля.

в моем AppDelegate. У меня есть глобальный объект профиля с именем currentProfile. Он используется в различных файлах.И однажды мне нужно освободить массив аватаров этого объекта, чтобы скопировать его в другой массив.Но копирование никогда не выполняется, потому что я получил ошибку во время выполнения при освобождении массива.Когда я анализирую код, я получаю следующее:

Свойство возвращает объект цели с числом удержания + 0 (ссылка не принадлежит)

Неверное уменьшение числа ссылок объектакоторый в данный момент не принадлежит вызывающему абоненту

Что не так?Почему я не могу выпустить массив?только потому, что он является членом класса?если так, как я могу заменить содержимое массива новым?

1 Ответ

1 голос
/ 08 ноября 2011

хорошо ... если вы не можете освободить его, вы всегда можете установить его на ноль, чтобы он отбрасывал весь контент, а затем вы можете переназначить массив с новой загрузкой данных.Другим решением было бы создать метод в классе Profile, который делает выпуск = nil + массива, чтобы он мог вызываться напрямую другими классами, использующими этот тип объекта.

...