2

시간 범위를 제어하기 위해 NSNotificationQueues에서 병합 알림을 사용할 때 어떤 방법이 있습니까?NSNotifications 병합

예 : 다음 초 동안,하지만 내가 사용할 수있는 옵션을 이해하면 즉시 또는 다음에 루프를 실행하거나 '유휴 상태 일 때'라고 표시됩니다.

더 긴 시간 범위에서 합쳐 지겠습니까?

기본적으로 작은 시간 범위에서 모든 사용자 이벤트 (핀치 - 줌)를 수집하고 사용자가 분명히 줌/등을 멈춘 후에 비싼 작업을 시작하는 방법을 찾고 있습니다.

답변

0

첫 번째 알림이 수신되면 NSTimer을 예약 할 수 있습니다. 다음 알림이 수신되면 타이머 인스턴스 변수를 확인하십시오. 그것이 nil이 아니면 통지를 무시하십시오. 그렇지 않으면 새로운 타이머를 시작하십시오.

타이머가 실행되면 타이머 인스턴스 변수를 지우고 값 비싼 작업을 시작하십시오.

더 간단한 대안은 performSelector:afterDelay:cancelPreviousPerformRequestsWithTarget:selector:object:을 사용하는 것입니다. 그러나 효과는 동일하지 않습니다. 알림을받을 때마다 비싼 작업을 더 지연시킬 것입니다. 알림이 설정 한 지연보다 빠르면 값 비싼 작업이 절대로 실행되지 않습니다.

+0

100 % 맞춤 구현을 설명합니다. 물론, 그 방법 중 하나 일뿐입니다. 그러나 내장 된 병합 알림 메커니즘을 사용하는 것과는 관련이 없습니다. – ATV

+0

예. 내장 된 합체가 "runloop의 끝"또는 "유휴 상태"이외의 다른 것을 제공한다고 생각하지 않습니다. 대부분의 경우 충분합니다. 비싼 작업을 초당 1 회 이상 트리거하고 싶다면 타이머를 사용하여 구현해야 할 것입니다. –