標籤:style blog color os io ar div sp log
** dispatch_after 延時操作應用情境 例如:遊戲後台需要做一些隨機的事件,需要在某個時間後,調用方法! 1> 調用的方法通常是跟UI有關的,例如提示使用者等 2> 不瞭解GCD或者多線程的人,可以直接填空即可 */- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ [self delay1];}#pragma mark - 延時操作/** 在其他線程中調用 dispatch_after */- (void)delay1{ // 1. 隊列 dispatch_queue_t q = dispatch_queue_create("myQueue", DISPATCH_QUEUE_CONCURRENT); // 2. 非同步任務 dispatch_async(q, ^{ NSLog(@"延時開始前.... %@", [NSThread currentThread]); // 輸入dispatch_after // 從目前時間,延遲2.0秒之後,給主隊列添加一個任務(此任務會在主線程上【非同步】運行) dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ NSLog(@"%@", [NSThread currentThread]); }); NSLog(@"延時設定結束...."); });}/** 在主線程調用dispatch_after */- (void)delay{ NSLog(@"延時開始前...."); // 輸入dispatch_after // 從目前時間,延遲2.0秒之後,給主隊列添加一個任務(此任務會在主線程上【非同步】運行) dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ NSLog(@"%@", [NSThread currentThread]); }); NSLog(@"延時設定結束....");}@end
** dispatch_after 延時操作應用情境 例如:遊戲後台需要做一些隨機的事件,需要在某個時間後,調用方法! 1> 調用的方法通常是跟UI有關的,例如提示使用者等 2> 不瞭解GCD或者多線程的人,可以直接填空即可 */- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ [self delay1];}#pragma mark - 延時操作/** 在其他線程中調用 dispatch_after */- (void)delay1{ // 1. 隊列 dispatch_queue_t q = dispatch_queue_create("myQueue", DISPATCH_QUEUE_CONCURRENT); // 2. 非同步任務 dispatch_async(q, ^{ NSLog(@"延時開始前.... %@", [NSThread currentThread]); // 輸入dispatch_after // 從目前時間,延遲2.0秒之後,給主隊列添加一個任務(此任務會在主線程上【非同步】運行) dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ NSLog(@"%@", [NSThread currentThread]); }); NSLog(@"延時設定結束...."); });}/** 在主線程調用dispatch_after */- (void)delay{ NSLog(@"延時開始前...."); // 輸入dispatch_after // 從目前時間,延遲2.0秒之後,給主隊列添加一個任務(此任務會在主線程上【非同步】運行) dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ NSLog(@"%@", [NSThread currentThread]); }); NSLog(@"延時設定結束....");}@end
ios多線程之GCD