如果 iOS 应用程序必须在后台发出数百个服务器请求并将结果保存在本地移动数据库中,那么哪种方法在性能方面会更好(更少崩溃)?
在全局后台队列中将所有请求作为 1 个块传递
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
for (i=0;i<users;i++)
{
Call Api 1
Call Api 2
Call Api 3
}
});
或者
创建“n”个用户串行队列并将所有 3 个 api 调用作为单独的块添加到每个串行队列中。
for (i=0;i<users;i++)
{
dispatch_queue_t myQueue = dispatch_queue_create([[users objectAtIndex:i] UTF8String], DISPATCH_QUEUE_SERIAL);
dispatch_async(myQueue, ^{
Call Api 1
});
dispatch_async(myQueue, ^{
Call Api 2
});
dispatch_async(myQueue, ^{
Call Api 3
});
}
编辑:在每个Call Api中,我使用的是NSOperationQueue。
queue = [[NSOperationQueue alloc] init];
[NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {..}