我正在构建一个带有计时器的应用程序,并且我创建了一个自定义类 Timer,它是 NSTimer 类的包装器。它有一个名为 remainingTime 的属性,该属性在计时器运行时定期更新。
我的视图控制器 TimerVC 实例化了一个 Timer 对象,需要根据 timer.remainingTime 更新其视图。我如何实现这一目标?
我相信我应该在这里使用委托,但我不知道它是如何工作的。哪个类应该实现委托方法?
或者也许我的方法全错了?
编辑:我没有在 TimerVC 中使用 NSTimer 的原因是因为我想抽象它以供重用,并将它与视图分离。
这是我的 Timer 类的代码:
#import "Timer.h"
#define SECONDS_INTERVAL 1
@interface Timer()
@property (strong, nonatomic) NSTimer *timer;
@property NSInteger seconds;
@property NSInteger secondsRemaining;
@end
@implementation Timer
- (Timer *)initWithSeconds:(NSInteger)seconds {
self = [super init];
if (self) {
self.seconds = seconds;
self.secondsRemaining = self.seconds;
}
return self;
}
- (void)start {
self.timer = [NSTimer timerWithTimeInterval:SECONDS_INTERVAL target:self selector:@selector(updateSecondsRemaining) userInfo:nil repeats:YES];
}
- (void)pause {
}
- (void)stop {
[self.timer invalidate];
self.timer = nil;
}
- (void)reset {
[self stop];
self.secondsRemaining = self.seconds;
}
- (void)updateSecondsRemaining {
self.secondsRemaining = self.secondsRemaining - SECONDS_INTERVAL;
if (self.secondsRemaining == 0) {
[self timerFinished];
}
}
- (void)timerFinished {
[self reset];
}