如何防止Firebase查询崩溃,在应用启动时EXC_BAD_ACCESS(KERN_INVALID_ADDRESS)?

How to prevent Firebase Query Crash, EXC_BAD_ACCESS (KERN_INVALID_ADDRESS) on App Startup?

提问人:Johnny Regan 提问时间:10/21/2023 最后编辑:Frank van PuffelenJohnny Regan 更新时间:10/22/2023 访问量:48

问:

在应用程序打开的前 2 秒内,我在一种特定方法的一行特定代码上遇到了这种崩溃。

这种崩溃在我的用户设备上随机发生,而不是在我的设备上发生,所以我无法重现它。我只拥有 Firebase Crashlytics 提供的功能。


有关代码的一些额外详细信息:

  • 此查询在用户打开应用时看到的第一页上的 ViewDidLoad 中运行

  • 此查询在后台线程中运行

  • 此查询与其他 6 个查询同时运行,每个查询都在自己的后台线程上运行

  • 此崩溃仅发生在此特定行的此特定查询中

  • 此崩溃通常发生在 FIRDocumentSnapshot 的第一次迭代中,但偶尔会在多次迭代后发生


我已经尝试过的一些解决方案:

  • 我尝试在运行任何其他查询之前允许此查询完成

  • 在所有其他查询完成后,我最后一次尝试运行此查询

  • 我尝试将 NULL 检查添加到 snapshot、doc 和 doc.data

  • 我试过检查 NSError

  • 我试过在主线程上运行它


访问 doc.data 时此行发生崩溃

NSLog(@"Test %@", doc.data);

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

   FIRFirestore *defaultFirestore = [FIRFirestore firestore];

   [[[[defaultFirestore collectionWithPath:@"Homes"] documentWithPath:homeID] collectionWithPath:collection] getDocumentsWithCompletion:^(FIRQuerySnapshot * _Nullable snapshot, NSError * _Nullable error) {    
       if (error == nil) {    
          for (FIRDocumentSnapshot *doc in snapshot.documents) {    
             if (doc != nil) {           
                 NSLog(@"Test %@", doc.data);            
             }    
          }    
       }    
   }];    
});
iOS Objective-C Firebase 谷歌云 Firestore exc-bad-access

评论


答: 暂无答案