Я читаю книгу "Ранчо большого ботаника" по программированию на iOS, и у меня возник вопрос о программе Hypnotime, которую они создали в главе 7.
В какой-то момент они реализуют следующий метод:
- (void)showCurrentTime:(id)sender
{
NSDate *now = [NSDate date];
static NSDateFormatter *formatter = nil;
if (!formatter) {
formatter = [[NSDateFormatter alloc] init];
[formatter setTimeStyle:NSDateFormatterShortStyle];
}
[timeLabel setText:[formatter stringFromDate:now]];
}
Мой вопрос о NSDateFormatter *formatter
. Форматтер создается с alloc
и init
. Я всегда знал, что что-то с alloc
нужно где-то выпустить, верно? Когда formatter
передается timeLabel
, разве timeLabel
не отправляет retain
ему? И не могу (не должен?) Я впоследствии выпустить formatter
?
Я просмотрел код на следующих двух страницах и нигде не могу найти никакого сообщения о выпуске, кроме release
, отправляемого на timeLabel
в dealloc
.
Я что-то здесь смешиваю? Есть ли причина, по которой formatter
не должен быть выпущен мной? Я хочу быть хорошим гражданином памяти. Любая помощь приветствуется:)