以下方法導致崩潰。用戶界面就像一個按鈕,它處理NSTimer的開始/停止功能。如果定時器運行,則更新UILabel。使用viewDidLoad方法使我的計時器工作,停止工作,但再次啓動會崩潰應用程序。NSTimer導致崩潰
刪除viewDidLoad方法中的alloc並嘗試使用開始按鈕導致崩潰立即。即使NSLog(@"Start now");
未被調用。
代碼:
- (void)tick {
NSLog(@"tick");
float value = [moneyLabel.text floatValue];
moneyLabel.text = [NSString stringWithFormat:@"%f", value + 1.0];
}
- (IBAction)startStopButtonClicked:(UIButton *)sender {
if ([sender.titleLabel.text isEqualToString:@"Start"]) {
NSLog(@"Start now");
if (timer) {
NSLog(@"Timer valid");
[timer fire];
} else {
NSLog(@"Timer is nil");
timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(tick) userInfo:nil repeats:YES];
[timer fire];
}
NSLog(@"bla");
[sender setTitle:@"Stop" forState:UIControlStateNormal];
} else {
[timer invalidate];
timer = nil;
NSLog(@"Stopped.");
NSLog(@"Timer isValid: %@", timer);
[sender setTitle:@"Start" forState:UIControlStateNormal];
}
}
發佈您的崩潰日誌。 – Devang
是PLZ發表您的崩潰日誌,以便我們可以幫助你... – sandy
***終止應用程序由於未捕獲的異常「NSInvalidArgumentException」,原因是:「 - [__ NSCFArray startStopButtonClicked:]:無法識別的選擇發送到實例0x683d8e0」 – DAS