从两个不同的线程调用相同的函数

时间:2015-10-29 04:55:49

标签: ios objective-c objective-c-blocks

我有一个功能:

- (void)fetchClassListOnCompletion:(void(^) (BOOL success, NSArray *classlist))completionBlock;

我想从两个不同的线程(可能是同时)调用此函数,并希望从最后完成的那个中获取类列表。

需要帮助来实现这个

1 个答案:

答案 0 :(得分:2)

试试这个:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
    [self fetchClassListOnCompletion:^(BOOL success, NSArray *classlist) {
         self.classList = classlist;
    }];
});

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
    [self fetchClassListOnCompletion:^(BOOL success, NSArray *classlist) {
         self.classList = classlist;
    }];
});

self.classList将从最后完成的块中分配给classlist

因为它在后台线程上运行,所以请确保您的方法不需要在主线程上运行。