我正在尝试在IOS应用中显示加载器屏幕,同时加载4个单独的数据刷新源。基本上我想排队每个Feed,当完成所有操作后导航到主页 - 这是我的调度队列代码 -
dispatch_group_t group = dispatch_group_create();
dispatch_group_async(group,dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^ {
[self loadFitnessPlan:[prefs valueForKey:@"customerUID"]];
NSLog(@"Block1 End");
});
dispatch_group_async(group,dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^ {
// block2
NSLog(@"Block2");
[self loadMessages:nil customeruid:[prefs valueForKey:@"customerUID"] categoryuid:nil messageopen:0];
NSLog(@"Block2 End");
});
dispatch_group_async(group,dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^ {
// block3
NSLog(@"Block3");
[self loadShopItems:nil clientuid:nil];
NSLog(@"Block3 End");
});
dispatch_group_async(group,dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^ {
// block4
NSLog(@"Block4");
[self loadResources:nil restypeuid:nil];
NSLog(@"Block4 End");
});
dispatch_group_notify(group,dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^ {
// block5
NSLog(@"HOPEFULLY WORKED");
[self completedLoad];
});
completedLoad方法如下:
-(void)completedLoad{
dispatch_async(dispatch_get_main_queue(), ^{
SWRevealViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"loadedArea"];
controller.managedObjectContext = self.managedObjectContext;
});
}
会发生什么 - 如果我从completedload中删除逻辑并添加一个NSlog,它是控制台中出现的最后一件事 - 如果我保留上面的代码,它会在后台数据加载的中途触发 - 不会对我来说有任何意义!?有什么想法吗?