2013-07-22 2 views
0

타이머를 2 분간 실행 한 후 몇 줄의 코드를 실행하는 간단한 디스패치 타이머를 구현합니다. 다음과 같이 코드는 내가 무엇을 찾고버튼을 클릭하면 dispatch_time_t가 중지됩니다.

dispatch_time_t poptime = dispatch_time (DISPATCH_TIME_NOW, delayInSeconds *NSEC_PER_SEC); 
dispatch_after(poptime,dispatch_get_main_queue(), ^(void){ 

       //some code here 
}); 

죽일 또는 중지하거나 버튼을 클릭하면 무한대로 타이머를 수정하는 중입니다이다. 버튼 클릭 기능이 있고이 디스패치 타이머는 클래스의 viewdidload 함수로 작성됩니다.

이것이 가능합니까? 덕분에 도와주세요 감사합니다.

+1

이것은 도움이 될 수 있습니다 : http://blog.spacemanlabs.com/2011/12/cancel-dispatch_after/ – trojanfoe

+0

2 분짜리 NSTimer를 사용할 수없는 이유가 있습니까? 그러면 버튼을 클릭 할 때 무효화됩니다 ? – James

+0

@James 나는 NSTimer를 시도했지만 전체 프로세스를 멈추고 시간 간격을 기다린다. –

답변

1

AFAIK 나는 GCD로 할 수 없다는 것을 알고 있습니다.

대신에 NSOperationQueue을 사용하고 cancelAllOperations을 사용하여 작업을 취소하십시오.

2

일단 GCD 블록이 발송되면 취소 할 수 없습니다. 대신 NSTimer과 같은 것을 사용해야합니다.

관련 문제