Если я хотел создать простой класс, который имеет три переменные экземпляра и методы как
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 необходимость в "выделении", или если это должно быть выпущено также.
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
, который вы уже используете, это будет нормально.