이 작업을 수행하는 올바른 방법은 무엇입니까?GCD 직렬 대기열에서 NSTimers를 예약하고 무효화하는 것이 안전합니까?
특별 고려 사항
당신은 타이머가 설치된 의 스레드에서이 메시지를 전송해야 다음
NSTimer
문서는이 말한다. 다른 스레드에서이 메시지를 보낼 경우, 타이머와 관련된 입력 소스가 제대로 을 종료에서 스레드를 방지 할 수있는 그 런 루프에서 를 제거되지 않을 수 있습니다.GCD
이후
는 항상 동일한 스레드에서 블록을 실행하는 일련 큐, 당신은 예약과 동일한 스레드에 NSTimer
을 무효화하도록 올바른 방법으로 무엇을 당신을 확신하지 않는 이유는 무엇입니까?
편집 :
아래의 대답의 조언에 따라, 나는 어떤 큐에서 사용할 수있는 GCD
를 사용하여 사용자 정의 타이머 구현 인 MSWeakTimer
(https://github.com/mindsnacks/MSWeakTimer를) 만들었습니다.
하나는 우리의 끔찍한 메모리 문제를 해결했다! – jowie