小さな「Menubar-Widget」を作成しようとしています。つまり、実際にはウィジェットではありませんが、ドックにはアイコンがなく、メニューまたはステータスバーにアイコンがある Cocoa アプリケーションです。
ボタンをクリックして NSTimer を起動すると、カウントダウンが表示されます。しかし、そうではありません...
- (void)update {
NSTimeInterval interval = [endDate timeIntervalSinceNow];
int _seconds = (int)interval%60;
int _minutes = (((int)interval-_seconds)/60)%60;
int _hours = ((int)interval-_seconds-_minutes*60)%3600;
timeLeft.stringValue = [NSString stringWithFormat:@"%i:%i:%i",_hours,_minutes,_seconds];
NSLog(@"%i:%i:%i",_hours,_minutes,_seconds);
}
では、正確には何が起こるのでしょうか?
タイマーを起動すると、インターフェイスは timeLeft ラベルを更新しません。NSLog() も機能しません。しかし、ボックスを閉じると、NSLog は正しい時刻を表示し、ボックスを再度開くと、正しい時刻を示しています。しかし、ボックスをもう一度閉じるまで、それ以上更新されません。