эта строка кода правильна для управления памятью (повторное копирование NSDate)? - PullRequest
1 голос
/ 05 мая 2011

правильная ли эта строка кода для управления памятью (повторная копия NSDate)?

У меня есть класс со свойствами:

@property (nonatomic, retain) NSDate* start;
@property (nonatomic, retain) NSDate* coreWeStart;

Теперь в методе init, предполагая self.startуже установлено, верно ли это, переустанавливая coreWeStart на ту же дату:

    self.coreWeStart= [[self.start copy] autorelease];

Просто дважды проверьте мое понимание того, что:

  1. требуется «копия», как в противном случаессылаются на тот же объект и
  2. нуждается в автоматическом выпуске, как я сделал копию

спасибо

Ответы [ 2 ]

1 голос
/ 05 мая 2011

Да. Ты понял.

  • Копирование возвращает новый объект с сохранением количества единиц.
  • присвоение его свойству ключевого слова retain увеличивает счетчик сохранения.
  • Авто-релиз уменьшит счет сохранения.

Таким образом, у вашего объекта есть свойство coreWeStart с счетом сохранения 1, который является копией свойства start .

1 голос
/ 05 мая 2011

Я бы сказал, что-то вроде, но все же можно было бы сделать лучше.В частности, вы можете сделать:

@property (nonatomic, copy) NSDate* coreWeStart;

... и затем:

self.coreWeStart = self.start;

..., чтобы получить то же самое с меньшим количеством кода.Также обязательно сделайте self.coreWeStart = nil в dealloc (и self.start = nil тоже).

...