如何消除导致此问题的错误线程1:EXC_BAD_ACCESS错误?

问题描述:

我对Swift相当陌生(我在一个月前了解它),并且正在创建一个自定义集合视图单元格,并将自定义类连接到View Controller类。我在问这个问题,因为我一直在努力寻找一个bug如何消除导致此问题的错误线程1:EXC_BAD_ACCESS错误?

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

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

     return answer 
} 

出了几个小时。这个bug是我View Controller类中的一个方法,它在LLDB窗口中显示一条错误消息“线程1:EXC_BAD_ACCESS(代码= 2 ... [计算机内存地址here]”在let answer = collectionView.numberOfItems(inSection: cellArray.count)处突出显示,我有followed this tutorial,错误不消灭

我已经包括了我的视图控制器类的一部分,我初始化属性,如果是有帮助的。

@IBOutlet weak var ibCollectionView: UICollectionView! 

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

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

截图的LLDB接口: Here is a screenshot of the LLDB interface.

任何帮助表示赞赏,因为我很困难谢谢你!

+0

灭掉一个bug是农药!......现在,严重的是,你检查了的CollectionView不是零和cellArray不为零的最好? – Gusman

+0

@Gusman我很确定。我已经编辑了这篇文章,其中包括LLDB界面的屏幕截图,其中显示了collectionView的内存位置 – ProgrammingEnthusiast

+0

希望没有人责怪我指向你的外部资源...试试这个方法来调试异常,它会给你更多的信息:https://code.tutsplus.com/tutorials/what-is-exc_bad_access-and-how-to-debug-it--cms-24544 – Gusman

,在跳出我的第一件事情是,你递归调用您的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插口而不修改故事板插口时,会发生处理collectionViews和tableViews的另一个问题。我已经包含了屏幕截图,所以你能明白我的意思:

Storyboard, assistant editor, and connections inspector

如果那些充满界的一个是空的,连接中断。要解决此问题,请执行以下操作:

  1. 打开故事板并选择heirarchy中的集合视图。
  2. CTRL +在助手编辑器中从梯级拖动到swift文件(用热键Alt + CMD + Enter打开)
  3. 应该出现一个对话框。输入插座的设置。
  4. 清理swift文件和连接编辑器中的旧插座和断开的连接。
+0

谢谢!我做了这些事情,现在当我去iOS模拟器中运行应用程序时,该应用程序只是冻结; LLDB不显示任何内容;我必须停止Xcode中的模拟。你知道这是为什么吗? – ProgrammingEnthusiast

+0

谢谢!我看到那个教程,但我被告知,对于这部分应用程序,我不需要UICollectionViewController。 [这是我的代码的其余部分的链接,因为它是目前。](https://*.com/questions/45463354/why-wont-my-collection-view-cells-display-in-the -iPhone模拟器)。我在'return cellArray.count'处插入了一个断点,现在它有一个绿色的消息“Thread 1:breakpoint 1.1”当它没有断点运行时,AppDelegate.swift有一个线程1:signal SIGABRT错误,但我仍然不确定这里要做什么。 – ProgrammingEnthusiast

+0

我一直在玩代码,它仍然抛出线程1:信号SIGABRT错误。 [这是我的代码](https://gist.github.com/ProgrammingExterminator/aebfb74a405200970297002c33d910c1)。在这一点上我很迷茫。 – ProgrammingEnthusiast