タイマーを含むアプリを構築しており、NSTimer クラスのラッパーであるカスタム クラス Timer を作成しました。タイマーの実行中に定期的に更新される、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];
}