ios - 在等待上一个执行完成时循环遍历 block

标签 ios objective-c nsstring nsarray block

我有一个代码块,它循环遍历一个数组并对其执行 block 代码。目前它看起来像这样:

for (NSString *myString in myArray) {

    [self doSomethingToString:myString WithCompletion:^(BOOL completion) {
        string = [NSString stringByAppendingString:@"Test"];
    }];

}

我想等待上一个迭代完成,然后再开始下一个迭代。我如何循环遍历这样的 block 代码?

最佳答案

试试这个

    dispatch_semaphore_t sema = dispatch_semaphore_create(0);

    for (NSString *myString in myArray) {

        [self doSomethingToString:myString WithCompletion:^(BOOL completion) {
            string = [NSString stringByAppendingString:@"Test"];
            dispatch_semaphore_signal(sema);
        }];

        dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER);
        dispatch_release(sema);

    }

关于ios - 在等待上一个执行完成时循环遍历 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19857055/

相关文章:

iphone - capitalizedString 将连字符后的单词大写?

iOS swift3 Chart xaxis重复值问题

ios - 链接器失败,错误代码为 1

ios - 被宠坏的模拟器 xcode 9. 作为一个破电视

ios - 为什么 Apple 的 Metal 矩阵乘法示例需要填充 C

ios - 无法识别的选择器发送到实例 obj c

android - 如何在基于Xamarin.forms的webview中使用html5视频标签?

iphone - 为什么有 AutoLayout 时有 2 个 Storyboard?

string - 无法使用 'UTTypeEqual' 类型的参数列表调用 '(CFString!, CFString!)'

cocoa - 将 NSString 转换为 float