Swift和iPhone 5中的EXC_BAD_ACCESS KERN_INVALID_ADDRESS

时间:2018-01-28 17:02:32

标签: ios swift swift3 crash crashlytics

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

enter image description here

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

enter image description here

问题似乎来自这条线:

@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,所以我不会测试它。

1 个答案:

答案 0 :(得分:2)

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

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

} 

需要注意的主要事项是崩溃是随机的。我自己还没有收到这个。它可能有可能取决于iOS或间接取决于Swift版本。