2011-01-20 4 views
0

약 20 개의 다른 타이머를 사용해야한다는 점에서 응용 프로그램을 만들고 있습니다.NSTimer 문제 - 단일 기능을 사용하여 다른 타이머 중지

그러나 모든 타이머는 런타임에 함수를 호출하여 생성됩니다.

모든 타이머의 타이머 간격이 다를 수 있으며 모든 타이머에는 1 분이 지나면 다른 카운터가 하나씩 줄어 듭니다.

이제 카운터가 0이되면 타이머가 중지됩니다. 그러나 내 응용 프로그램에서 모든 타이머는 다른 카운터 값을 가지고 있으며 단일 시간 간격으로 다른 타이머를 중지하려고합니다.

다른 타이머를 만들 수 있고 해당 타이머 기능에 선택기 값을 제공함으로써 타이머를 중지 할 수 있다는 것을 알고 있습니다. 한 번에 얼마나 많은 타이머가 실행되는지 알지 못합니다. 한 번에 하나의 타이머를 중지하면 모든 타이머가 중지되고 기능이 제대로 표시되지 않습니다.

논리 또는 샘플을 제공하여 도움을주십시오. 여러 시간 간격으로 단일 기능을 사용하여 여러 타이머를 중지하는 방법.

미리 감사드립니다.

답변

0

소프트웨어 디자인을 다시 생각해보십시오. 당신은 정상으로 당신의 메소드를 호출 할 수 있습니다

[self method]; 

그리고 다음 각 방법의 끝에서, 다음을 수행하십시오

[self performSelector:@selector(method) withObject:nil afterDelay:(1000)]; 

이 루프를 생성합니다. 그런 다음 정수가 증가하고 카운터가 0에 도달하면 다른 작업을 수행 할 수 있습니다. 코드를 훨씬 효과적으로 관리 할 수 ​​있습니다. 어떤 상황에서는 여전히 타이머가 필요할 수도 있지만,이 타이머는 사용하려는 타이머 20 개보다 훨씬 효율적입니다.

+0

이것은 올바른 방법이지만 카운터 값을 줄이기 위해 매분마다 값을 변경해야합니다. 그 중 하나가 값을 변경하면 나머지 시간을 추가하여 카운터 값이 증가합니다. 그래서 그 순간에 나는 카운터를 늘리거나 줄일 수 없기 때문에 적절한 방법이 아닙니다. –