dispatch_async经常应用于我们日常开发中,一提到dispatch_async我们想到的是多线程或者异步执行,但这个小技巧并不是和多线程或者异步执行相关的。
你有没有在开发中遇到这种情况:你需要执行一段代码,但是代码执行的所需要的数据或者环境没有达到要求,只能在当前数据配置完成后再执行。这个时候我们通常的做法是:
//[self doSomething]; 需要执行的代码 [self performSelector:@selector(doSomething) withObject:nil afterDelay:0.1f];
这个方法是在0.1秒后执行,一般情况下设置充足的时间,来满足数据加载和环境配置的完成在代码运行方面来说是可行的。但是在某些代码强迫症人眼里,设置的延迟时间你怎么就能保证环境配置就一定能达到。
巧妙的利用dispatch_async函数就能达到完美的效果:
dispatch_async(dispatch_get_main_queue(),^{ [self doSomething]; });
前提条件是[self doSomething]必须是需要在主线程执行的代码,有人或许会问,本来[self doSomething]就是在主线程执行,为什么还要加这个函数呢,这是里用GCD队列的一个特性,主线程的任务队列,会依次执行,执行完这一个再去执行下一个。利用这个特点就可以避免上面设置延迟执行所带来的不确定性。
GCD函数dispatch_async的小妙用
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- iOS多线程的方法有3种: NSThread NSOperation GCD(Grand Central Disp...
- 原文:http://www.cocoachina.com/ios/20170707/19769.html 本文主要...
- App运营:做应用市场,玩法太多;做整合营销,预算有限;做地推下载,又缺少可执行的团队; 太多难题需要思考,运营小...