如何在enumerateLinesUsingBlock完成时收到通知

时间:2016-01-05 11:20:44

标签: ios objective-c asynchronous block enumerate

完成enumerateLinesUsingBlock后是否有任何通知方式?请检查以下代码。我在while循环中使用chunk数据块调用createFastSearchData方法,并在内部使用每行并处理它。在条件我正在检查主字符串的长度,我想继续直到它完成总长度。所以我想确保再次在while循环触发之前完成enumerateLinesUsingBlock

while(<checking the length of the mainstring>){
   [self createFastSearchData:string];
}


- (void)createFastSearchData:(NSString *)newChunk{
     [newChunk enumerateLinesUsingBlock:^(NSString * line, BOOL * stop)
         {}];
}

加了:

我正在使用块并且难以理解实际流程。请检查以下代码。我想通过在数组fetchCSVData中传递不同的值来调用filesToBeFetchedWhat方法。我想确保fetchCSVData不应该重叠。我怎样才能做到这一点?请帮忙

    dispatch_async( dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
        @autoreleasepool {
            for (int i = 0; i < filesToBeFetched.count; i++) {
                [applicationDelegate fetchCSVData:[filesToBeFetched objectAtIndex:i]];
            }
        }
        dispatch_async( dispatch_get_main_queue(), ^{
            NSLog(@"Fetching is done *********************");
        });
    });

1 个答案:

答案 0 :(得分:0)

回答问题的第一部分:

所有enumerate...UsingBlock方法都不能异步工作。

关于增加的部分:

假设fetchCSVData同步工作,那是处理数据的首选方式

dispatch_async( dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
    @autoreleasepool {
       for (int i = 0; i < filesToBeFetched.count; i++) {
          [applicationDelegate fetchCSVData:[filesToBeFetched objectAtIndex:i]];
          dispatch_async( dispatch_get_main_queue(), ^{
            NSLog(@"Fetching is done *********************");
          });
       }
    }
});