Ios 如何使用AppDiEnterBackground的依赖项扩展NSOperationQueue?
我知道在iOS应用程序进入后台后,如何扩展在后台运行的任务Ios 如何使用AppDiEnterBackground的依赖项扩展NSOperationQueue?,ios,objective-c,cocoa-touch,multitasking,nsoperationqueue,Ios,Objective C,Cocoa Touch,Multitasking,Nsoperationqueue,我知道在iOS应用程序进入后台后,如何扩展在后台运行的任务 beginBackgroundTaskWithExpirationHandler dispatch_async 等等 但是,如果我有一个NSOperationQueue,希望作为后台任务进行扩展,而不丢失NSOperations之间的相互依赖性,该怎么办?假设我有这个: NSBlockOperation *op1 = [NSBlockOperation blockOperationWithBlock:^{ // Do stuf
beginBackgroundTaskWithExpirationHandler
dispatch_async
等等
但是,如果我有一个NSOperationQueue,希望作为后台任务进行扩展,而不丢失NSOperations之间的相互依赖性,该怎么办?假设我有这个:
NSBlockOperation *op1 = [NSBlockOperation blockOperationWithBlock:^{
// Do stuff
}];
NSBlockOperation *op2a = [NSBlockOperation blockOperationWithBlock:^{
// Do stuff
}];
[op2a addDependency:op1];
NSBlockOperation *op2b = [NSBlockOperation blockOperationWithBlock:^{
// Do stuff
}];
[op2b addDependency:op1];
NSBlockOperation *op3 = [NSBlockOperation blockOperationWithBlock:^{
// Do stuff
}];
[op3 addDependency:op2a];
[op3 addDependency:op2b];
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
[queue addOperations: @[op1, op2a, op2b, op3] ];
有没有一种优雅的方式让NSOperationQueue在后台完成?我意识到我没有完全理解后台线程扩展是如何工作的 调用beginBackgroundTaskWithExpirationHandler启动后台扩展后,我可以在后台执行任何我想要的操作。我以为只有一个线程被扩展,但实际上整个应用程序都在运行
因此,我必须在最后一次NSO操作结束时调用endBackgroundTask来实现我想要的功能。我意识到我没有完全理解后台线程扩展是如何工作的 调用beginBackgroundTaskWithExpirationHandler启动后台扩展后,我可以在后台执行任何我想要的操作。我以为只有一个线程被扩展,但实际上整个应用程序都在运行 因此,我只需在最后一次NSO操作结束时调用endBackgroundTask即可实现我想要的功能