也许这个问题之前已经以不同的形式提出过.但我认为我的看法不同.我正在为整个代码库和大量重构做一些优化任务,这也将为代码的可读性提供服务.
所以我发现[NSThread sleepForTimeInterval:]
方法写在某处,对于延迟,我总是使用GCD的dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(<#delayInSeconds#> * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{})
方法.那么问题是哪个更好?
这是一个巨大的差异.
[NSThread sleepForTimeInterval:]
阻止当前线程.如果当前线程是主线程,这很糟糕.根据你在做什么,它可能在其他线程上很好或很糟糕.
dispatch_after
不会阻止当前线程.该块排队等待将来在指定队列上运行,而当前线程继续以其快乐方式继续.
没有任何特定的背景,我会说dispatch_after
在几乎所有情况下这都是更好的方法.