Как я знаю, когда выпустить объект NSDate? - PullRequest
3 голосов
/ 03 февраля 2010

Для одного или обоих указателей даты требуется [релиз], когда я закончу с ними. Откуда мне это знать? Я не уверен, так как я не делаю init явно.

NSDate *date = [NSDate date];

NSDate *date = [dateWithTimeIntervalSince1970:100000000];

Ответы [ 2 ]

5 голосов
/ 03 февраля 2010

Оба выпускаются автоматически, то есть вам не нужно выпускать их самостоятельно. Практическое правило заключается в том, что вы владеете объектом, если отправляете + alloc или -copy или явно сохраняете его:

  • [[SomeClass alloc] init ...]
  • [someObject copy]
  • [некоторые объекты сохраняются]

Если у вас есть объект, вы должны освободить его. + new - это сочетание клавиш + alloc и -init.

5 голосов
/ 03 февраля 2010

Нет, обе возвращаемые даты из этих методов автоматически высвобождаются.Вам не нужно беспокоиться об управлении их памятью, хотя, чтобы быть хорошим гражданином, было бы неплохо установить указатель на ноль, когда вы закончите с ними.

Как правило, вы можетеследуйте тому, что я называю правилом "CARN".в Какао / Какао Прикоснитесь к любому методу, в котором есть слова Copy, Alloc, Retain, или New , которые будут возвращать объекты, которые должны быть освобождены вами в определенный момент.Это соглашения об именах, применяемые к методам, которые возвращают объекты со счетом сохранения +1.Класс, который вызывает эти методы, «владеет» объектом и отвечает за его освобождение, когда он закончил с ним.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...