EXEC_BAD_ACCESS при освобождении скопированного объекта - PullRequest
0 голосов
/ 16 декабря 2011

Это убивает меня .. Потому что это проблема управления памятью ...

У меня есть NSArray, созданный примерно так, скажем, в Class 2

@property (nonatomic, copy) NSArray * sourceArray;

Я установил этот массив из другого класса, скажем, Class 1, как ...

Class2 = [[Class2 alloc] initWithFrame:self.bounds];
[Class2 setSourceArray:self.namesArray];

Где я уверен, что self.namesArray содержит объекты.

Когда я выпускаю Class 1, он выпускает Class 2, так как Class 2 является подпредставлением в Class 1, что ожидается, но я получаю EXEC_BAD_ACCESS, когда Class 2 выпускает sourceArray в dealloc следующим образом ...

[sourceArray release];

Я не получаю эту ошибку, если я не выпускаю namesArray в классе 1 .. Что не имеет смысла, потому что я использую, я объявил sourceArray как COPY, который, насколько мне известно, дает Class 2 свою собственную версию массива .. .

Может ли кто-нибудь помочь мне здесь? Это убивает меня!

Дополнительная информация: Число ссылок перед тем, как я пытаюсь выпустить sourcearray, равно 1 ... Так почему же релиз не будет работать?!

1 Ответ

0 голосов
/ 16 декабря 2011

Что не имеет смысла, потому что я использую, я объявил sourceArray как COPY, который, насколько мне известно, дает Class 2 собственную версию массива.может помочь вам узнать, что -copy часто просто сохраняет объект для неизменяемых объектов.Это не должно иметь значения для вашего кода, поскольку оригинал неотличим от копии для неизменяемых объектов.Возможно, вы перевыпускаете массив в Class1, и проблема проявляется только тогда, когда Class2 выпускает его «копию» массива.

...