【问题标题】:EXC_BAD_ACCESS KERN_INVALID_ADDRESS in Swift and iPhone 5Swift 和 iPhone 5 中的 EXC_BAD_ACCESS KERN_INVALID_ADDRESS
【发布时间】:2018-01-28 17:02:32
【问题描述】:

我刚刚启动了该应用,但在使用 iPhone 5 和 5c 以及 iOS 10.3.3(仅限)时遇到了问题。

我真的不明白这个问题,即使有 Crashlytics 报告:

问题似乎来自这一行:

@objc UserProfilViewController.collectionView(UICollectionView, layout : UICollectionViewLayout, sizeForItemAtIndexPath : IndexPath) -> CGSize

这是我的代码:

// Cell size
   func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: IndexPath) -> CGSize {

      let size: CGSize
      if cellIsNull == false {
         size = CGSize(width: self.view.frame.size.width * 0.47, height: self.view.frame.size.width * 0.47)
      } else {
         size = CGSize(width: self.view.frame.size.width, height: self.view.frame.size.width * 0.47)
      }
      return size
   }

如果我在模拟器上运行应用程序(使用 iPhone 5),应用程序不会崩溃,而且我没有 iPhone 5,所以我不对其进行测试。

【问题讨论】:

    标签: ios swift swift3 crash crashlytics


    【解决方案1】:

    称之为巧合。几个小时前我问了一个similar 的问题。不相同但相似。
    解决方法是将@objc 放在函数定义的前面。所以功能应该是这样的:

    @objc func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: IndexPath) -> CGSize { 
    ....  
    
    } 
    

    主要需要注意的是崩溃是随机的。我自己还没有收到。有可能它依赖于 iOS 或间接依赖于 Swift 版本。

    【讨论】:

    • 你知道为什么@objc 有效吗?我面临着类似的崩溃,无法重现。谢谢。
    • 您能解释一下为什么在函数中添加@objc 有效吗?
    猜你喜欢
    • 1970-01-01
    • 2012-10-09
    • 2020-04-13
    • 2017-04-02
    • 2023-03-23
    • 1970-01-01
    • 2016-01-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多