dispatch_async使用优势

时间:2016-04-04 14:01:00

标签: ios multithreading grand-central-dispatch

当我遇到dispatch_async的用法时,我正在查看此code

dispatch_async(dispatch_get_main_queue(), ^{
    [self.photosArray removeAllObjects];
    [[self mutableArrayValueForKeyPath:@"photosArray"] addObjectsFromArray:photos];
});

如果我没错,这行代码等于:

 [self.photosArray removeAllObjects];
 [[self mutableArrayValueForKeyPath:@"photosArray"] addObjectsFromArray:photos];

我很困惑为什么开发人员在这种情况下选择使用dispatch_async。如果我错了,请纠正我。

1 个答案:

答案 0 :(得分:0)

这两个代码片段根本不相同。那么dispatch_async在您的案例中做了什么?

  1. 如果从后台线程调用它,它将在主线程上运行其块,让调用线程继续执行其业务,而无需等待主线程。
  2. 如果从主线程调用它,它会在主线程上运行它的块,但不会立即,稍后,在下一个运行循环迭代中,所以调用代码将被执行,然后才会执行块以及