【发布时间】:2019-11-16 01:29:26
【问题描述】:
我有一个异步的dispatch queue,它在后台从大文件中读取数据。在此过程中,它会做一些其他事情,包括一些 NSTask 操作。我面临的问题是我用这些操作的结果填充了一些变量,并且在这些变量准备好(不是 NULL)时后台队列已经移动。
我的代码如下所示:
dispatch_queue_t backgroundQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(backgroundQueue, ^{
// reading large files
...
NSTaskClass *operation = [[NSTaskClass alloc] init];
NSString *result = [operation doTask:filePath];
NSLog(@"result: %@" result); // returns NULL since task isn't done yet.
...
// continue large file operations
});
这将是处理此问题的最佳方法吗?我考虑创建一个callback,但我无法弄清楚,我不确定这是否是正确的方法。感谢您提供有关最佳做法的任何建议,谢谢。
【问题讨论】:
-
不是后台,是另一个进程。你真的需要在另一个进程中读取大文件吗?只有在运行某些服务器时才有意义。
标签: objective-c macos dispatch nstask