如何消除导致此 Thread 1: EXC_BAD_ACCESS 错误的错误?

How to exterminate the bug causing this Thread 1: EXC_BAD_ACCESS error?

我是 Swift 的新手(大约一个月前才学会),我正在创建一个自定义集合视图单元格,并将我的自定义 class 连接到视图控制器 class。我问这个问题是因为我一直在努力解决一个错误

    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {

        let answer = collectionView.numberOfItems(inSection: cellArray.count)

        return answer
}

出去几个小时。这个错误是我的视图控制器 class 中的一个方法,它在 LLDB window 中显示一条错误消息 "Thread 1: EXC_BAD_ACCESS (code=2...[computer memory address here]" 在 let answer = collectionView.numberOfItems(inSection: cellArray.count) 处突出显示 我有 followed this tutorial 并且bug还没除掉

我已经包含了我的 View Controller class 初始化属性的部分,如果这有帮助的话:

@IBOutlet weak var ibCollectionView: UICollectionView!

var cellArray:[customCollectionViewCell] = Array(repeatElement(customCollectionViewCell(), count: 6))

let displayedCellDimensions = CGSize(width: 343, height: 248)

LLDB界面截图:

感谢任何帮助,因为我很困。谢谢!

首先让我吃惊的是,您正在递归调用您的 numberOfItemsInSection:

func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {

    let answer = collectionView.numberOfItems(inSection: cellArray.count)

    return answer

相反,你应该只给它想要的东西,物品数量:

func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {

    return cellArray.count

当您在 swift 文件中重命名或删除并重新添加 InterfaceBuilder 出口而不修改情节提要出口时,会发生处理 collectionView 和 tableView 时的另一个问题。我附上了屏幕截图,以便您明白我的意思:

如果其中一个实心圆圈是空的,则连接断开。要解决此问题:

  1. 打开情节提要和select层次结构中的集合视图。
  2. CTRL+从层次结构拖动到辅助编辑器中的 swift 文件(使用热键 ALT+CMD+Enter 打开)
  3. 应该会出现一个对话。输入出口设置。
  4. 清理 swift 文件和连接编辑器中的所有旧插座和断开的连接。