Влияние на объект до и после сохранения и копирования - PullRequest
0 голосов
/ 01 ноября 2011

У меня два вопроса:

  1. У меня есть объект, назовите его X. Когда я назначаю сохранение объекту X ([x retain]) и затем изменяю данные в объекте X, каким будет счет сохранения X?

  2. У меня есть два объекта, A & B. Сначала я делаю копию следующим образом:

    B = [A copy];

и теперь я изменяю данные в объекте A. Будут ли также меняться данные B, и каким будет счетчик ссылок A и B до и после изменения данных?

Ответы [ 2 ]

1 голос
/ 01 ноября 2011
  1. То же, что было до изменения данных.

  2. i.Нет, у вас есть два независимых объекта после копирования.Изменение одного больше не влияет на другое.
    ii.Как и прежде, чем вы изменили данные.

Пожалуйста, ознакомьтесь с эссе .

Apple по управлению памятью *1013*.
0 голосов
/ 01 ноября 2011

Для 1, если вы хотите изменить данные, например x.foo = y, счетчик сохранений не изменится. Если вы имеете в виду x = y, то количество сохраняемых значений x изменится на число сохраняемых значений y, поскольку x равно y.

Для 2

Данные B остаются без изменений. Число сохраненных файлов B равно 1. Число сохраненных файлов A такое же, как и до копирования.

Это нормальный случай, но я думаю, что объект может вернуть не новый объект из копии. Я думаю, что неизменяемые строки NSStrings вернут себя в качестве копии, поэтому счет сохранения B может быть не равен 1, а счет хранения A будет увеличен на 1. По сути, вы не можете на это полагаться.

...