From ee0ef322e69d053aef24d0766cdcb218468c76f7 Mon Sep 17 00:00:00 2001 From: masarusanjp Date: Sat, 10 Mar 2018 15:54:45 +0900 Subject: [PATCH] fixed a bug modal viewController was not deallocated when to call dismissAllModals --- ios/RCCManagerModule.m | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/ios/RCCManagerModule.m b/ios/RCCManagerModule.m index e6c1353c564..d1a21cf7a9e 100755 --- a/ios/RCCManagerModule.m +++ b/ios/RCCManagerModule.m @@ -163,7 +163,7 @@ -(void)dismissAllModalPresenters:(NSMutableArray*)allPresentedViewControllers re if (viewController.presentedViewController != nil) { dispatch_semaphore_t dismiss_sema = dispatch_semaphore_create(0); - + dispatch_async(dispatch_get_main_queue(), ^ { [viewController dismissViewControllerAnimated:NO completion:^() @@ -171,11 +171,11 @@ -(void)dismissAllModalPresenters:(NSMutableArray*)allPresentedViewControllers re if (rootViewController != viewController) { [[RCCManager sharedIntance] unregisterController:viewController]; } - + if (counter == allPresentedViewControllers.count && allPresentedViewControllers.count > 0) { [allPresentedViewControllers removeAllObjects]; - + if (resolve != nil) { resolve(nil); @@ -184,19 +184,23 @@ -(void)dismissAllModalPresenters:(NSMutableArray*)allPresentedViewControllers re dispatch_semaphore_signal(dismiss_sema); }]; }); - + dispatch_semaphore_wait(dismiss_sema, DISPATCH_TIME_FOREVER); - } - else if (counter == allPresentedViewControllers.count && allPresentedViewControllers.count > 0) - { - [allPresentedViewControllers removeAllObjects]; - - if (resolve != nil) + } else { + if (rootViewController != viewController) { + [[RCCManager sharedIntance] unregisterController:viewController]; + } + if (counter == allPresentedViewControllers.count && allPresentedViewControllers.count > 0) { - dispatch_async(dispatch_get_main_queue(), ^ - { - resolve(nil); - }); + [allPresentedViewControllers removeAllObjects]; + + if (resolve != nil) + { + dispatch_async(dispatch_get_main_queue(), ^ + { + resolve(nil); + }); + } } } }