iOS App 在 iOS 13 上的编译器生成代码中崩溃

Posted

技术标签:

【中文标题】iOS App 在 iOS 13 上的编译器生成代码中崩溃【英文标题】:iOS App crashed in compiler generated code on iOS 13 【发布时间】:2019-11-05 09:52:30 【问题描述】:
    我在 Fabric crashalytics 中遇到了这个错误。 它显示为编译器生成的错误。 我尝试了很多方法来解决它,但都不起作用。 我需要帮助。我是开发新手。

“我尝试了许多方案来重现错误,例如重新加载数据和旋转设备,但它在我的设备 iphone 6 中正常工作,但在客户端 iphone XR 中它崩溃了。”

Crashed: com.apple.main-thread
0  WorkInProgress                 0x10471dc58 specialized 
WIPInsightNewVC.collectionView(_:layout:sizeForItemAt:) (<compiler- 
generated>)

1  WorkInProgress                 0x104713390 @objc 
   WIPInsightNewVC.collectionView(_:layout:sizeForItemAt:) (<compiler- 
   generated>)
2  UIKitCore                      0x1be82c200 - 
   [UICollectionViewFlowLayout 
   _getSizingInfosWithExistingSizingDictionary:] + 2976
3  (Missing)                      0x4a655d81be82d800 (Missing)
4  (Missing)                      0x0 (Missing)
5  (Missing)                      0x741c9081be820800 (Missing)
6  (Missing)                      0x791e1b01be821000 (Missing)
7  (Missing)                      0x7516ca81be7f1c00 (Missing)
8  (Missing)                      0x0 (Missing)
9  (Missing)                      0x1b2e2401bac27b00 (Missing)
10 (Missing)                      0x1674481c19ee0f0 (Missing)
11 (Missing)                      0x0 (Missing)
12 (Missing)                      0x0 (Missing)
13 (Missing)                      0x3311a201c1946c00 (Missing)
14 (Missing)                      0xa4c0701c1971c00 (Missing)
15 (Missing)                      0x414a1f81c1972800 (Missing)
16 (Missing)                      0x0 (Missing)
17 (Missing)                      0x0 (Missing)
18 (Missing)                      0x4b0edd81bae87800 (Missing)
19 (Missing)                      0x597e0b01bae87000 (Missing)
20 (Missing)                      0x0 (Missing)
21 (Missing)                      0x0 (Missing)
22 (Missing)                      0x0 (Missing)
23 libdyld.dylib                  0x1bad06f30 start + 4

sizeForItemAt 方法中的代码,它可能会帮助您解决我的问题。

    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize 

    var width = view.frame.width - 40
    let height = UIScreen.main.bounds.height
    var estimatedFrame = CGRect()
    var size = CGSize()

    size = CGSize(width: width, height: .greatestFiniteMagnitude)

    if collectionView == progressCV 

        let obj = (appDel?.objActiveUserTaskProgress?.workProgressRecords?[indexPath.row])!
        estimatedFrame = NSAttributedString(attributedString: obj.pROGRESSTASKDESCRIPTION.htmlAttributedString()!).boundingRect(with: size, options: .usesLineFragmentOrigin, context: nil)
        sizes = Int(estimatedFrame.height)
    
    else 
        let obj = (appDel?.objActiveUserTaskProgress?.graphDetails?[indexPath.row])!
        estimatedFrame = NSAttributedString(attributedString: obj.pROGRESSTASKDESCRIPTION.htmlAttributedString()!).boundingRect(with: size, options: .usesLineFragmentOrigin, context: nil)
        sizes = Int(estimatedFrame.height)
    

    print(sizes)
    if sizes <= 20 
        sizes = 25
    
    sizes += 64

    if UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiom.pad 
        width = progressCV.bounds.width / 2 - 15
        return CGSize(width: Int(width), height: sizes)
    
    else 
        if iphoneX 
            if width > height 
                width = progressCV.bounds.width
            
        
        return CGSize(width: Int(width), height: sizes)
    

【问题讨论】:

你能解释一下你正在尝试什么吗,只是发布错误不会给你一个解决方案 解释你的问题。看到***.com/help/how-to-ask @vishal :我在结构中收到编译器生成错误的崩溃报告,所以请帮我解决它。我尝试了不同的方法来解决它,但这不起作用。谢谢 @JakirHossain 请帮我解决它。我是 swift 和 ios 开发的新手。我在结构崩溃分析中收到此错误日志。 @Joakim Danielson 请帮帮我 【参考方案1】:

在 iOS 13 中,无论何时隐藏(或)取消隐藏视图,都会为高度约束赋予恒定值,并且所有操作都必须仅在主线程中完成。

例如:

DispatchQueue.main.async 
   self.heightConstraint.constant = 150
   self.listView.isHidden = true

【讨论】:

以上是关于iOS App 在 iOS 13 上的编译器生成代码中崩溃的主要内容,如果未能解决你的问题,请参考以下文章

iOS 开发.app快速生成.ipa包安装

iOS开发-canOpenURL: failed for URL: "xx" - error:"This app is not allowed to query fo(代

Flutter和iOS混合开发iOS14启动闪退

关于自动编译iOS工程,生成app及ipa文件的方法-备

编译包含 iOS 8 App Extension 的 Xcode 项目时生成错误

sceneDidEnterBackground 上的 URL 请求(iOS13)