몇 초마다 반복되는 두 개의 타이머를 내 애플리케이션에 설치했습니다. 타이머가 무효화 될 때를 제외하고는 모두 정상적으로 작동합니다. 전화가 잠겨있을 때 타이머를 무효화하고 전화가 잠길 때 다시 생성하려고합니다.무효화 할 때 Iphone EXC_BAD_ACCESS로 NSTimer 크래시가 발생합니다.
메신저 알림을 사용하여 타이머를 무효화/생성하는시기를 알 수 있습니다.
clockTicker = [[NSTimer scheduledTimerWithTimeInterval: 1
target: self
selector: @selector(showActivity)
userInfo: nil
repeats: YES] retain];
alarmTicker = [[NSTimer scheduledTimerWithTimeInterval: CONST_ALARMTIMER
target: self
selector: @selector(checkAndLaunchAlarm)
userInfo: nil
repeats: YES] retain];
이것을 notify_willResigneActive 방법이 포함되어 있습니다 :
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(notify_didBecomeActive:) name:UIApplicationDidBecomeActiveNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(notify_willResigneActive:) name:UIApplicationWillResignActiveNotification object:nil];
이
은 notify_didBecomeActive 방법에 포함 된 내용입니다if (alarmTicker) {
[alarmTicker invalidate];
[alarmTicker release];
alarmTicker = NULL;
}
if (clockTicker) {
[clockTicker invalidate];
[clockTicker release];
clockTicker = NULL;
}
문제는 내가이 두 번째 타이머 무효화에 디버깅 할 때 내가 얻을 수 있다는 것입니다 오류. 이상한 것은 타이머의 순서를 바꾸면 (먼저 clockTicker를 무효화하는 것처럼) .. 두 번째 타이머에서 여전히 오류가 발생합니다.
내가 잘못 할 수 있습니까? 레오나르도
어쩌면 ..하지만 어느 쪽이든 작동하지 않습니다. 릴리스 라인이 아니라 두 번째 타이머가 충돌합니다. 나는 많은 정보를 얻을 수 없다. 내가 잃어버린 것이 있는지 좀비가 볼 수 있도록 노력할 것이다. – Homer1980ar