소스 검색

Fix potential problem when IOS documentController is not executed from main thread #168

Ben Hsieh 8 년 전
부모
커밋
762c46e79a
1개의 변경된 파일6개의 추가작업 그리고 2개의 파일을 삭제
  1. 6
    2
      src/ios/RNFetchBlob/RNFetchBlob.m

+ 6
- 2
src/ios/RNFetchBlob/RNFetchBlob.m 파일 보기

@@ -446,7 +446,9 @@ RCT_EXPORT_METHOD(previewDocument:(NSString*)uri scheme:(NSString *)scheme resol
446 446
     UIViewController *rootCtrl = [[[[UIApplication sharedApplication] delegate] window] rootViewController];
447 447
     documentController.delegate = self;
448 448
     if(scheme == nil || [[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:scheme]]) {
449
-        [documentController  presentOptionsMenuFromRect:rootCtrl.view.bounds inView:rootCtrl.view animated:YES];
449
+        dispatch_sync(dispatch_get_main_queue(), ^{
450
+            [documentController  presentOptionsMenuFromRect:rootCtrl.view.bounds inView:rootCtrl.view animated:YES];
451
+        });
450 452
         resolve(@[[NSNull null]]);
451 453
     } else {
452 454
         reject(@"RNFetchBlob could not open document", @"scheme is not supported", nil);
@@ -463,7 +465,9 @@ RCT_EXPORT_METHOD(openDocument:(NSString*)uri scheme:(NSString *)scheme resolver
463 465
     documentController.delegate = self;
464 466
     
465 467
     if(scheme == nil || [[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:scheme]]) {
466
-        [documentController presentPreviewAnimated:YES];
468
+        dispatch_sync(dispatch_get_main_queue(), ^{
469
+            [documentController presentPreviewAnimated:YES];
470
+        });
467 471
         resolve(@[[NSNull null]]);
468 472
     } else {
469 473
         reject(@"RNFetchBlob could not open document", @"scheme is not supported", nil);