#####1.1.GCD定時器基本應用oop
-(void) baseGCD{ //建立一個GCD定時器 //<#dispatch_source_type_t type#> DISPATCH_SOURCE_TYPE_TIMER self.timer=dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, dispatch_get_global_queue(0, 0 )); //設置定時器何時起動,間隔是多少 dispatch_source_set_timer(self.timer, DISPATCH_TIME_NOW, 2.0*NSEC_PER_SEC, 0); //設置定時器要作的事情 dispatch_source_set_event_handler(self.timer, ^{ NSLog(@"start --v%@",[NSThread currentThread]); }); //定時器默認是沒有啓動的,因此要託運啓動 dispatch_resume(self.timer); }
#####2.1.增強版GCDui
int count=0; -(void) GCD{ //GCD不受runLoop模式的影響 dispatch_queue_t queue=dispatch_get_global_queue(0, 0); //建立一個GCD定時器 //DISPATCH_SOURCE_TYPE_TIMER self.timer=dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue); //設置定時器何時起動,間隔是多少 //when:什麼時候開始 dispatch_time_t start=dispatch_time(DISPATCH_TIME_NOW, 3.0*NSEC_PER_SEC); //間隔 uint64_t interval=2.0*NSEC_PER_SEC; dispatch_source_set_timer(self.timer, start, interval, 0); //設置定時器要作的事情 dispatch_source_set_event_handler(self.timer, ^{ NSLog(@"start --v%@",[NSThread currentThread]); //執行五次後自動釋放gcd count++; if (count>4) { dispatch_cancel(self.timer); self.timer=nil; } }); //定時器默認是沒有啓動的,因此要託運啓動 dispatch_resume(self.timer); }