के लिए प्रतीक्षा नहीं करता है दो समवर्ती पृष्ठभूमि कार्यों को दो अलग-अलग सरणी को पैच करने की आवश्यकता होती है जिन्हें एक dispatch_group_notify ब्लॉक में विलय करने की आवश्यकता होती है। समस्या यह है कि वह पहला ब्लॉक पार हो गया है लेकिन dispatch_group_notify निष्पादन की प्रतीक्षा किए बिना पार हो गया है दूसरे पृष्ठभूमि कार्य का। उनके बीच एकमात्र अलग यह है कि पहला व्यक्ति स्थानीय खोज करता है और दूसरा वेब सेवा पर रिमोट कॉल करता है। कोई संकेत क्यों दूसरा दूसरा कूद गया है?dispatch_group_notify एक dispatch_group_async
संपादित करें: मैंने dispatch_barrier_async का उपयोग करके https://stackoverflow.com/a/19580584/859742 में उल्लिखित दृष्टिकोण की भी कोशिश की लेकिन फिर भी वही।
dispatch_group_t taskGroup = dispatch_group_create();
dispatch_queue_t mainQueue = dispatch_get_main_queue();
__block NSArray *localAddresses;
__block NSArray *remoteAddresses;
//Get local array in the background
dispatch_group_async(taskGroup, mainQueue, ^{
//localAddresses is set
});
//get remote array from server
dispatch_group_async(taskGroup, mainQueue, ^{
[[MDAddressManager instance] searchForPlacesContainingText:query
location:alocation
completion:^(NSArray* addresses, MDError *error){
//remoteAddresses is set
});
//Merge two arrays
dispatch_group_notify(taskGroup, mainQueue, ^{
//remoteAddresses and local addresses are merged
});
और दूरदराज खोज विधि इस
- (void)searchForPlacesContainingText:(NSString *)searchText
location:(CLLocation *)alocation
completion:(MDAddressManagerBlock)completionBlock
{
NSDictionary *parameters = [[NSMutableDictionary alloc] init];
[parameters setValue:searchText forKey:@"input"];
[[MDHTTPClient sharedHTTPClient] getPath:@"v1/remotePlaces.json"
parameters:parameters
success:^(AFHTTPRequestOperation *operation, id dict) {
if ([MDHTTPClient isResponseValid:dict])
{
completionBlock(returnArray, nil);
}
else
{
completionBlock(nil, nil);
}
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
EDLog(@"%@", error);
completionBlock(nil, [MDError errorAFNetworking:error]);
}];
}
वैकल्पिक उत्तरों के साथ प्रतिक्रिया और महान स्पष्टीकरण के लिए आपको बहुत बहुत धन्यवाद =) –
I hav मैं इस तरह के कुछ लंबे समय के लिए खोज रहा था। :) थम्स अप। : डी – riyaz
क्या आप अभी भी समूह समापन के अधिसूचित होने के लिए dispatch_group_notify का उपयोग करते हैं? –