2010-04-13 2 views
1

버튼이있는 간단한 응용 프로그램, UIImageView 및 NSTimer가 있습니다. 타이머가 5 초마다 반복적으로 실행되어 새로운 이미지로 ImageView를 업데이트하는 반면, 버튼은 타이머를 중지하고 다른보기로 전환합니다.NSTimer가 다시 실행될 때까지 앱을 정지 시켰습니까?

문제는 내가 버튼을 누르면 타이머가 다시 작동 할 때까지 아무런 변화가 없다는 것입니다.

타이머를 멈추고 타이머 간격 대신 주어진 시간에 작업을 수행하는 방법이 있습니까?

버튼은 InterfaceBuilder에서 정의되며 코드의 함수에 연결됩니다.

NSTimer 코드 : (RunLoop에 추가하지 않고 &으로 시도했습니다).

updateTimer = [NSTimer scheduledTimerWithTimeInterval:5 target:self selector:@selector(updateImageViews) userInfo:nil repeats:YES];

NSRunLoop* runLoop = [NSRunLoop currentRunLoop]; 
[[NSRunLoop currentRunLoop] addTimer:updateTimer forMode:NSDefaultRunLoopMode]; 
[runLoop run]; 

감사합니다!

+0

당신은 타이머를 멈추기 위해 invalidate를 사용하고있다 ...? 어떤 코드를 넣을 수 있는가 ...? –

+0

나는 타이머 코드 을 추가했다. 그리고 네, 단추를 누를 때 호출되는 함수에서 타이머를 중지하려면 무효화를 사용합니다. –

+0

"아무 일도 없다"는 말은 다음보기가 나타나지 않는다는 것을 의미합니까? 타이머가 실행될 때보기가 표시됩니까? 무엇을보고 싶은지, 실제로보아야 할 것은 무엇입니까? – TechZen

답변

1

"NSRunloop의 관점에서 볼 때 NSTimer 객체는"입력 "되지 않습니다. 이는 특별한 유형이며, 실행되는 실행 루프를 반환하지 않는 것 중 하나입니다." (NSRunLoop Class Reference에서) - 그래서 나는 runloop을 계속 차단한다고 생각합니까? 타이머를 솔루션과 다른 스레드에 넣으시겠습니까? 나는 이것 자체적으로 문제가있다 : (

관련 문제