mutableCopyWithZone обновляет значение свойства - PullRequest
0 голосов
/ 26 мая 2010

У меня есть класс, который мне нужно скопировать с возможностью изменения значения переменной в обоих классах.Проще говоря, эти классы должны всегда оставаться клонами друг друга.Мое понимание документации состоит в том, что я могу сделать это, используя мелкую копию класса, которая также была объявлена ​​изменяемой.Путем поверхностного копирования значение указателя для переменной будет клонировано так, чтобы оно точно совпадало в обоих классах.Поэтому, когда я обновляю переменную в оригинале, копия будет обновляться одновременно.Это правильно?

Как вы можете видеть ниже, я использовал mutableCopyWithZone в классе, который я хочу скопировать.Я попробовал оба метода NSCopyObject и allocWithZone, чтобы заставить это работать.Несмотря на то, что я могу скопировать класс, и он выглядит так, как задумано, при обновлении переменной оно не меняет значение в скопированном классе.файл класса, который копируется.Я также соответственно реализовал протокол NSMutableCopying.

Любая помощь была бы великолепна.

Ответы [ 2 ]

1 голос
/ 26 мая 2010

Вы правы, вам нужна копия мелкая , но вы делаете копию глубину . Измените [infoTextViews copy] на [infoTextViews retain]

Маленькие очки .. allocWithZone? Вы имеете в виду allocWithZone: zone? Обычный старый alloc, вероятно, будет в порядке.

Почему mutableCopyWithZone:? Существуют ли изменяемые и неизменяемые версии ReviewViewer? Вы, вероятно, просто хотите copyWithZone:

Примечание. Если вы переопределяете copyWithZone для выполнения поверхностного копирования, вы указываете это поведение везде, где копируется объект.

0 голосов
/ 27 мая 2010

Вместо двух отдельных, но одинаковых объектов, почему вы не можете просто использовать один и тот же экземпляр вашего класса в более чем одном месте? Таким образом, есть только один объект для изменения. Как только вы делаете копию (глубокую или мелкую), у вас есть два независимых объекта - изменения одного не распространяются на другой.

...