You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Thread 1: EXC_BAD_ACCESS错误含义、修复及iOS代码问题排查

错误「Thread 1: EXC_BAD_ACCESS (code=2, address=0x30d51fff8)」解析与修复

错误含义

这个错误是iOS开发中典型的内存访问异常:

  • EXC_BAD_ACCESS:表示程序尝试访问了不被允许的内存区域
  • code=2:此处的触发原因是无限递归耗尽栈空间——递归调用会持续占用栈帧,当超出系统允许的栈容量时,就会触发内存访问错误。同时因为递归一直在执行,界面无法完成渲染,所以出现白屏。

问题定位

你的代码核心问题出在updateQuestion()函数的无限递归调用:

func updateQuestion() {
    triviaLabel.text = quiz[questionNumber].text // Get the error here
    updateQuestion() // 这里递归调用自身,形成无终止循环
}

每次调用updateQuestion都会再次触发自身调用,循环无休无止,快速耗尽栈内存,最终触发错误。

修复步骤

  1. 移除递归调用
    修改updateQuestion函数,删除内部的updateQuestion()调用,修改后代码如下:
    func updateQuestion() {
        triviaLabel.text = quiz[questionNumber].text
        // 可按需添加进度条更新逻辑,比如:
        // progressBar.progress = Float(questionNumber + 1) / Float(quiz.count)
    }
    
  2. 验证辅助项(可选)
    • 确认Question类定义正确,示例如下:
      struct Question {
          let text: String
          let answer: String
      }
      
    • 若修复后仍有问题,再检查triviaLabel的IBOutlet关联是否正常(你已尝试重新关联,大概率无问题)

内容的提问来源于stack exchange,提问作者Hetasha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 05:01:19