Выделение NSTimer как свойство

Если я хотел создать простой класс, который имеет три переменные экземпляра и методы как

    NSInteger seconds;
    NSInteger minutes;
    NSTimer *timer;


- (void)setMinutes:(NSInteger)m;
- (void)setSeconds:(NSInteger)s;
- (NSInteger)minutes;
- (NSInteger)seconds;

То, что я хочу, должно инициализировать объект NSTimer и иметь его обратный отсчет с теми минутами/секунды. Но я не уверен, как инициализировать таймер и выпустить его, если мне нужно к (в конечном счете, у меня было несколько движений таймеров). Я знаю, как использовать метод:

[NSTimer scheduledTimerWithTimeInterval:1.0
                                target:self 
                               selector:@selector(doTimer:)
                               userInfo:nil
                                repeats:YES];

Я не вижу примера NSTimer необходимость в "выделении", или если это должно быть выпущено также.

1
задан Crystal 12 July 2010 в 03:50
поделиться

1 ответ

scheduleTimerWithTimeInterval возвращает экземпляр NSTimer . Просто используйте свойства и переопределите установщик, чтобы сделать таймер недействительным

    NSTimer *timer;

@property (nonatomic, retain) NSTimer *timer;
- (void)setTimer:(NSTimer *)t;



- (void)setTimer:(NSTimer *)t {
    if (timer) {
        [timer invalidate];
        [timer release];
        timer = nil;
    }

    timer = [t retain];
}

. У вас есть указатель на таймер, используя self.timer , и когда вы устанавливаете self.timer = newTimer , он сохраняет новый и аннулирует и освобождает старый.

Важно отметить, что ваш установщик ожидает, что входной таймер будет автоматически выпущенной копией. Если вы планируете использовать метод NSTimer scheduleTimerWithTimeInterval , который вы уже используете, это будет нормально.

2
ответ дан 2 September 2019 в 23:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: