다음과 같은 방법으로 충돌이 발생합니다. UI는 NSTimer의 시작/정지 기능을 처리하는 버튼과 같습니다. 타이머가 실행되면 UILabel이 업데이트됩니다. viewDidLoad 메서드를 사용하면 타이머가 작동하고 멈추게되지만 다시 시작하면 응용 프로그램이 중단됩니다.NSTimer가 충돌을 일으킴
viewDidLoad 메서드에서 alloc을 제거하고 시작 버튼을 사용하려고하면 즉시이 발생합니다. NSLog(@"Start now");
조차도 호출되지 않습니다.
코드 : 나는 모든 [NSTimer fire]
를 호출 할 필요가 표시되지 않습니다
- (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