Если вы хотите получить текущую дату, вы можете просто использовать:
NSDate * now = [NSDate date];
Если вы хотите сохранить его, тогда retain
это.
NSDate * now = [[NSDate date] retain];
Вы не можете сбросить NSDate
с помощью init, init предназначен только для первоначальной инициализации объекта.
Вы можете просто получить другую дату:
NSDate * now = [[NSDate date] retain];
// use the now object
// need new date
[release now];
now = [[NSDate date] retain];
// once you don't need it release it
[now release];
Сообщение date
возвращает autoreleased
экземпляр NSDate
, следовательно, release
или autorelease
.
autorelease
используется в тех случаях, когда вам не нужно беспокоиться о том, где именно вам нужно освободить объект - он помещается в autorelease pool
. Объект в пуле автоматического освобождения освобождается после окончания итерации цикла событий или при вызове команды release в пуле ... (подробнее об документации по управлению памятью в Apple).
Btw. [NSDate date]
- это удобный метод, который, вероятно, примерно такой (не гарантируется, что он точно такой же, но функционально похож на):
- (NSDate *)date
{
return [[[NSDate alloc] init] autorelease];
}