应用程序崩溃。尝试调试 [UITableView _createPreparedCellForGlobalRow:withIndexPath:willDisplay:]

App Crashes. Trying to debug [UITableView _createPreparedCellForGlobalRow:withIndexPath:willDisplay:]

提问人:Kamlesh Shingarakhiya 提问时间:4/6/2022 更新时间:4/6/2022 访问量:274

问:

我使用 4 个容器视图,每个容器视图有 4 个表视图。但奇怪的是,有些设备崩溃了,而不是所有设备。我在 Firebase Crashlytics 中遇到崩溃/登录。

Crashed: com.apple.main-thread
0  PuzzleStar                     0x1d5cf8 threeXtwoVC.tableView(_:cellForRowAt:) + 4309310712 (threeXtwoVC.swift:4309310712)
1  PuzzleStar                     0x1d61bc @objc threeXtwoVC.tableView(_:cellForRowAt:) + 4309311932 (<compiler-generated>:4309311932)
2  UIKitCore                      0xd42648 -[UITableView _createPreparedCellForGlobalRow:withIndexPath:willDisplay:] + 724
3  UIKitCore                      0xd100c8 -[UITableView _updateVisibleCellsNow:] + 2524
4  UIKitCore                      0xd232ec -[UITableView _visibleCellsUsingPresentationValues:] + 448
5  PuzzleStar                     0x1d6458 threeXtwoVC.scrollViewDidScroll(_:) + 563 (threeXtwoVC.swift:563)
6  PuzzleStar                     0x1d69e8 @objc threeXtwoVC.scrollViewDidScroll(_:) + 4309314024 (<compiler-generated>:4309314024)
7  UIKitCore                      0xfc6a5c -[UIScrollView _notifyDidScroll] + 76
8  UIKit                          0x6d968 -[UIScrollViewAccessibility _notifyDidScroll] + 44
9  UIKitCore                      0xd10c68 -[UITableView _notifyDidScroll] + 60
10 UIKitCore                      0xfaea88 -[UIScrollView setContentOffset:] + 1160
11 UIKitCore                      0xd2fab8 -[UITableView setContentOffset:] + 284
12 UIKitCore                      0xfbfc14 -[UIScrollView _smoothScrollWithUpdateTime:] + 2320
13 UIKitCore                      0xfbfed4 -[UIScrollView _smoothScrollDisplayLink:] + 436
14 QuartzCore                     0x13640 CA::Display::DisplayLink::dispatch_items(unsigned long long, unsigned long long, unsigned long long) + 660
15 IOKit                          0x7464 IODispatchCalloutFromCFMessage + 376
16 CoreFoundation                 0x77b54 __CFMachPortPerform + 172
17 CoreFoundation                 0x9b420 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 56
18 CoreFoundation                 0x9a834 __CFRunLoopDoSource1 + 588
19 CoreFoundation                 0x949f4 __CFRunLoopRun + 2332
20 CoreFoundation                 0x93ba0 CFRunLoopRunSpecific + 572
21 GraphicsServices               0x3598 GSEventRunModal + 160
22 UIKitCore                      0xb2e2f4 -[UIApplication _run] + 1052
23 UIKitCore                      0xb33874 UIApplicationMain + 164
24 PuzzleStar                     0x53c8 main + 26 (HBText.swift:26)
25 libdyld.dylib                  0x1568 start + 4 

我把这段代码用于tableview

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        
        if isShowAds && ((indexPath.row + 1) == arrCategories.count) && !(UserDefaults.standard.object(forKey: "isProUser") as? Bool ?? false) {
            
            guard let adsCell = tableView.dequeueReusableCell(withIdentifier: "BottomAds", for: indexPath) as? BottomAdsView else {
                return UITableViewCell()
            }
            
            if !adsCell.adLoad {
                DispatchQueue.main.async {
                    adsCell.setupAdsUI()
                }
            }
            
            return adsCell
            
        }
        else if (!(UserDefaults.standard.object(forKey: "isProUser") as? Bool ?? false) && (indexPath.row > 4)) && arrCategories.count > 6 && (arrCategories[indexPath.row].id == arrCategories[5].id) {
           
           guard let adsCell = tableView.dequeueReusableCell(withIdentifier: "BottomAds", for: indexPath) as? BottomAdsView else {
               return UITableViewCell()
           }
           
           if !adsCell.adLoad {
               DispatchQueue.main.async {
                   adsCell.setupAdsUI()
               }
           }
           
           return adsCell
       }
        else if (!(UserDefaults.standard.object(forKey: "isProUser") as? Bool ?? false) && (indexPath.row > 15)) && arrCategories.count > 16 && ( arrCategories[indexPath.row].id == arrCategories[16].id) {
            guard let adsCell = tableView.dequeueReusableCell(withIdentifier: "BottomAds", for: indexPath) as? BottomAdsView else {
                return UITableViewCell()
            }
            
            if !adsCell.adLoad {
                DispatchQueue.main.async {
                    adsCell.setupAdsUI()
                }
            }
            
            return adsCell
        }
        
       else {
           
           guard let cell = tableView.dequeueReusableCell(withIdentifier: "threeXfour", for: indexPath) as? threeXfourCell else {
               return UITableViewCell()
           }
           
           cell.cellTapped = {
               if !self.isFromDB {
                   self.delegate?.threefourCellTapped(cardDataModel: self.arrCategories[indexPath.row], cellIndex: indexPath.row)
               }
           }
           
           if arrCategories.count > 0 {
               
               cell.configthreefourCell = arrCategories[indexPath.row]
               cell.imageLoaded = {
                   DispatchQueue.main.async {
                       if cell.imgBack != nil && cell.imgBack.image != nil {
                           let aspectRatio = cell.imgBack.image!.size.height/cell.imgBack.image!.size.width
                           let imageHeight = cell.vwBack.frame.width*aspectRatio
                           rowHeightsAspected[indexPath.row] = aspectRatio
                           //                        self.tblThreeFour.beginUpdates()
                           self.defaultHeight = imageHeight+17.0
                           self.rowHeights[indexPath.row] = imageHeight+17.0
                           //                        self.tblThreeFour.endUpdates()
                           //                        self.tblThreeFour.layoutIfNeeded()
                       }
                   }
               }
               
               //Adding tag and handle click event for Preview & Favourite
               cell.btnPreview.tag = indexPath.row
               cell.btnPreview.addTarget(self, action: #selector(onClickPreview), for: .touchUpInside)
               
               cell.btnFav.tag = indexPath.row
               cell.btnFav.addTarget(self, action: #selector(onClickFav), for: .touchUpInside)
               
               if !cardFavExists(fileName: arrCategories[indexPath.row].zipFile.name, entitiName: puzzlestartDB.entitynameFavourite) {
                   cell.btnFav.setImage(UIImage.init(named: "ic_fav"), for: .normal)
               }
               else {
                   cell.btnFav.setImage(UIImage.init(named: "ic_fav_fill"), for: .normal)
               }
           }
           tblThreeFour.clipsToBounds = false
           return cell
       }
    }
iOS Swift iPhone UITableView 崩溃

评论

0赞 Adam Cooper 12/3/2022
你能解决这个问题吗?
0赞 Kamlesh Shingarakhiya 12/5/2022
不,我不能......

答: 暂无答案