Objective-c свойство и управление памятью - PullRequest
1 голос
/ 19 января 2012

Просто быстрый вопрос: У меня есть массив, назовите его sourceArray. В этом массиве есть словари. У меня есть сохраненное свойство, которое используется для хранения одного элемента из массива. Когда я устанавливаю свойство из массива, оно работает нормально. Но когда я установил его с другим элементом и вернулся к первому, я получил исключение bad_access, так как первый элемент был выпущен.

У меня вопрос почему? В исходном массиве элементы сохраняются, и когда я устанавливаю свойство, оно сохраняется. Когда я установлю его снова, сеттер сбросит старое значение и сохранит новое. Я думаю ... Но, видимо, это не работает таким образом.

Пример:

 [self setProperty:[sourceArray objectAtIndex:0]];
 [self setProperty:[sourceArray objectAtIndex:1]];
 [self setProperty:[sourceArray objectAtIndex:0]]; ---> Exception

1 Ответ

0 голосов
/ 19 января 2012

Я понял. В другом месте у меня есть строка:

property = [sourceArray objectAtIndex:0];

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

...