Базовое управление памятью iOS

Я читаю книгу Big Nerd Ranch по программированию для 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 , нужно где-то выпустить, верно? Когда форматтер передается в timeLabel , разве timeLabel не отправляет ему сохранить ? И я не могу (не должен?) Впоследствии выпустить форматтер ?

Я просмотрел код на следующих двух страницах и нигде не могу найти никаких сообщений о выпуске, кроме релиз отправляется на timeLabel в dealloc .

Я что-то тут путаю? Есть ли причина, по которой я не должен выпускать форматтер ? Я хочу быть гражданином с хорошей памятью. Приветствуется любая помощь :)

5
задан cabaret 3 August 2011 в 15:05
поделиться