2013-01-09 2 views
0

코딩에 비교적 익숙하며 루프의 매 n 번째 반복 (이 경우 NSTimer가 똑딱 거리는)에서 일부 코드를 실행하는 일반적인 방법이 있는지 궁금해합니다. .NSTimer tick의 매 n 번째 반복에서 일부 코드 트리거

나는 CADisplayLink을 사용하고 있지만 초당 40 번, 50 번 등 여러 번 업데이트합니다. 500 개 루프마다 몇 가지 코드를 실행하려면 표준 방법이 있습니까? modulo 연산자와 integer을 함께 사용할 수 있다고 가정하지만, 새로운 코더가 알아야 할 더 나은 /보다 표준화 된 방법이 있습니까?

여분의 명확성 (비록 이것이 꽤 일반적 일 것입니다.) : 저는 초당 60 번 틱하는 타이머가 있지만, 매 10 번째 반복마다 무언가를하고 싶습니다. 이미 modulo와 정수를 사용하여이 작업을 수행 할 수 있다는 것을 이미 알고 있지만 이와 같은 상황을 처리하기위한 다른 규칙이 있는지 알고 싶습니다.

미리 감사드립니다.

+0

더 명확하게 할 수 있습니까? – CRDave

답변

0

올바른 간격으로 전용 타이머를 설정하십시오.

NSTimer 또는 CADisplayLink을 사용하는지 여부에 관계없이 타이머 호출은 너무 오래 걸리는 경우 병합되고 오프셋 될 수 있습니다. 20 프레임을 실행하는 디스플레이 링크가있는 경우 새로 고침 간격이 초당 60 프레임 인 경우에만 초당 3 회만 호출됩니다. 그리고 매 초마다 실행되도록 설정된 타이머가있는 경우, 실행하는 데 2 ​​초 30 초 이상 걸리면 다음 반복을 "먹었"며 너무 늦게 다음 반복을 실행합니다.

이 때문에 타이머 호출 만 계산하면 타이머가 동기화되지 않을 수 있습니다. 일정 간격으로 무언가를 반복하려면 타이머를 해당 간격으로 설정하는 것이 가장 좋은 방법입니다.

매우 많은 타이머를 수행하지 않으면 성능상의 문제가되지 않습니다.이 경우 하나의 틱 타이머로 표준화하고 특정 시점에 이벤트를 예약해야합니다 (여전히 똑같지는 않습니다). 이전 반복 계산).

+0

완벽 하군요, 제가 찾고 있던 바로 그 겁니다. 감사! – Luke

관련 문제