대기중인 performSelector : afterDelay 호출 취소
호출 할 때 이벤트 스택 또는 타이머 스택 (또는 API에서 사용하는 메커니즘)에서 이미 큐에 저장된 선택기 이벤트를 취소 할 수 있는지 아는 사람이 performSelector:withObject:afterDelay
있습니까?
이 이벤트 스택을 사용하여 TabBar 탭 내에서 이미지의 속성을 변경하고 때로는 루프에 대해 빠르게 실행되는 하나 (5 밀리 초 정도)에 최대 10 초까지 변경 사항을 대기합니다.
사용자가 탭을 전환하면 문제가 발생합니다. 탭 # 4를 활성화하자마자 표시되는 이미지에 대해 이미지 변경 사항이 대기열에 있고 사용자가 탭 # 3으로 빠르게 전환 한 다음 바로 탭으로 돌아갑니다. # 4 ... 오래된 대기열이 여전히 재생되는 동안 10 초 정도의 변경 사항을 다시 대기열에 넣을 것입니다. 충분히 빠르게 전환하면 대기열에 2 ~ 3 초 정도 걸립니다. 스트림은 문제였다.
그래서 새로운 스택을 넣기 전에 오래된 변경 스택을 취소하는 방법이 필요했습니다 ...
재생 기능에 호크 아이드 이벤트 필터를 추가 하여이 문제에 대한 대안 솔루션을 이미 제시했기 때문에 과거 시제 로이 쿼리를 작성하고 있습니다. 그러나 이벤트 취소가 가능한지 궁금합니다. 앞으로 그러한 지식이 유용 할 것이라는 느낌이 들기 때문입니다. 도움을 주셔서 감사합니다 :)
[NSObject cancelPreviousPerformRequestsWithTarget:]
또는
[NSObject cancelPreviousPerformRequestsWithTarget:selector:object:]
이 target
있는 원래의 목적 performSelector:afterDelay:
이라고했다.
예를 들면 다음과 같습니다.
// schedule the selector
[self performSelector:@selector(mySel:) withObject:nil afterDelay:5.0];
// cancel the above call (and any others on self)
[NSObject cancelPreviousPerformRequestsWithTarget:self];
설명 이 끝나면 apple docs를 참조하십시오 performSelector:withObject:afterDelay:
.
이전의 모든 수행 요청을 취소하려면 다음을 사용할 수 있습니다.
[NSObject cancelPreviousPerformRequestsWithTarget:self];
일치하는 " cancelPreviousPerformSelector
" 을 가진 "performSelector"를 찾고 있다면 ... 그렇지 않습니다. (애플, 왜 나 한테 그렇게하는거야 ???)
"일치하는"방법은 다음과 같습니다.
performSelector
cancelPreviousPerformRequestsWithTarget
(문서를 검색하지 않고 기억하기가 더 어려워집니다.)
NSRunLoop 문서를 확인하십시오. 당신이 원하는-cancelPerformSelectorsWithTarget:
참고 URL : https://stackoverflow.com/questions/1806445/cancelling-queued-performselectorafterdelay-calls
'programing tip' 카테고리의 다른 글
코드 주석에서 #XXX의 의미는 무엇입니까? (0) | 2020.07.23 |
---|---|
jQuery : $ (). click (fn) vs. $ (). bind ( 'click', fn); (0) | 2020.07.23 |
“--allow-file-access-from-files”모드에서 Chrome을 사용하여 HTML을 시작하는 방법은 무엇입니까? (0) | 2020.07.23 |
비동기 액션 대리자 메서드를 어떻게 구현합니까? (0) | 2020.07.23 |
WCF 서비스 코드를 디버깅하려고 할 때“시계 추가”기능에서“표현식 평가 기에서 내부 오류”가 표시됨 (MSVS 2013) (0) | 2020.07.23 |