【问题标题】:Thread 1: EXC_BAD_ACCESS (code=2, address=0x7ffeeaa26f48)线程 1:EXC_BAD_ACCESS(代码=2,地址=0x7ffeeaa26f48)
【发布时间】:2018-02-22 20:32:58
【问题描述】:

我不知道这个错误是什么意思

Thread 1: EXC_BAD_ACCESS (code=2, address=0x7ffeeaa26f48)

这意味着我不知道如何修复我的代码。请帮我。如果您需要,这是我的代码。如果您需要更多代码,请询问我。我希望你们能帮助我。编辑:我包含了我所有的代码。我希望你们可以使用它,并且很抱歉没有定义这个问题所必需的变量。再次希望你们能解决这个问题。

var score = 0
var randomAmountOfTime = Double(arc4random_uniform(5) + 2)
var randomAmountOfTime2 = Double(arc4random_uniform(5) + 2)
var randomAmountOfTime3 = Double(arc4random_uniform(5) + 2)
var randomAmountOfTime4 = Double(arc4random_uniform(5) + 2)
var randomAmountOfTime5 = Double(arc4random_uniform(5) + 2)

override func viewDidLoad() {
    super.viewDidLoad()
    if X != nil {
        X.text = ""
    }
    if Puppy5 != nil {
        Puppy5.isHidden = true
    }
    if Puppy4 != nil {
        Puppy4.isHidden = true
    }
    if Puppy3 != nil {
        Puppy3.isHidden = true
    }
    if Puppy2 != nil {
        Puppy2.isHidden = true
    }
    if Puppy1 != nil {
        Puppy1.isHidden = true
    }
    score = 0
    if Score != nil {
        Score.text = "Score - \(score)"
    }
    loadingProcess()
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}
@IBOutlet var Score: UILabel!
@IBOutlet var X: UILabel!
@IBOutlet var Puppy5: UIButton!
@IBAction func puppy5(_ sender: Any) {
    Puppy5.isHidden = true
    score += 1
    Score.text = "Score - \(score)"

}
@IBOutlet var Puppy4: UIButton!
@IBAction func puppy4(_ sender: Any) {
    Puppy4.isHidden = true
    score += 1
    Score.text = "Score - \(score)"

}
@IBOutlet var Puppy3: UIButton!
@IBAction func puppy3(_ sender: Any) {
    Puppy3.isHidden = true
    score += 1
    Score.text = "Score - \(score)"

}
@IBOutlet var Puppy2: UIButton!
@IBAction func puppy2(_ sender: Any) {
    Puppy2.isHidden = true
    score += 1
    Score.text = "Score - \(score)"
}
@IBOutlet var Puppy1: UIButton!
@IBAction func puppy1(_ sender: Any) {
    Puppy1.isHidden = true
    score += 1
    Score.text = "Score - \(score)"

}
func loadingProcess() {
    if self.Puppy1 != nil && self.Puppy1.isHidden == true {
        let when = DispatchTime.now() + randomAmountOfTime
        DispatchQueue.main.asyncAfter(deadline: when) {
            self.Puppy1.isHidden = false
            self.loadingProcess()
        }
    } else if self.Puppy1 != nil && self.Puppy1.isHidden == false {
        let when = DispatchTime.now() + 3
        DispatchQueue.main.asyncAfter(deadline: when) {
            self.Puppy1.isHidden = true
            if self.X.text == "X" {
                self.X.text = "X X"
            } else if self.X.text == "" {
                self.X.text = "X"
            } else if self.X.text == "X X" {
                self.X.text = "X X X"
            }
        }
    }
    self.loadingProcess()
}

【问题讨论】:

  • 如果您发布更多代码,您可能会对我们有所帮助。 Puppy1 是什么?什么是“X”?对loadingProcess() 的递归调用是怎么回事?一般来说,你想用这段代码做什么?编辑:更多问题。哪一行代码产生了错误?什么在调用loadingProcess(),它是否覆盖了操作系统所做的事情?最后编辑:这个想法是我们需要复制这个问题。从外观上看,您的代码构建,对吗?所以我们需要更多细节——是的,代码和你在做什么的解释——才能真正提供帮助。谢谢!
  • 添加到@dfd 什么是randomAmountOfTime?始终解释代码应该做什么以及预期的结果应该是什么。
  • 抱歉,我会确保添加定义

标签: ios swift xcode


【解决方案1】:

您正在无条件地递归调用self.loadingProcess()。这个无限循环肯定会导致崩溃。

【讨论】:

  • 顺便说一句,您可以检查调试导航器(在左侧导航器上)以查看此方法被调用了多少次。可能很多
  • 哦,应该这样做,因为我这样做是为了重复。
  • 以这种方式递归调用方法总是会导致崩溃。我不确定我是否理解最后一行代码的目标
  • 谢谢你告诉我。你有什么想法我可以重复吗
  • 如果您想定期重复,您可以使用计时器。 timer = Timer.scheduledTimer(timeInterval: timeInteral, target: self, selector: #selector(self.loadingProcess), userInfo: nil, repeats: true)
猜你喜欢
  • 2019-01-04
  • 2015-10-07
  • 2020-11-22
  • 1970-01-01
  • 1970-01-01
  • 2021-12-12
  • 1970-01-01
  • 2018-03-13
  • 2013-10-11
相关资源
最近更新 更多