我试图用骰子演示量子物理学中的叠加。应用程序应该输出随机数量的骰子,每个骰子上都有一个随机值。这是用于获取骰子数量和每个骰子数量的代码:

func newDice() {
    var amountOfNumbers = Int(arc4random_uniform(6))+1
    var diceDisplayed: Array<Int> = []
    for var i=1; 1<=amountOfNumbers; ++i {
        var diceNum: Int = Int(arc4random_uniform(6)) + 1
        diceDisplayed.append(diceNum)
    }
}

我计划在这个基础上添加更多的内容来实际设置骰子,但是如果这不起作用,那么如何设置骰子。
当设备震动时,我使用此功能:
override func motionEnded(motion: UIEventSubtype, withEvent event: UIEvent) {
    if motion == .MotionShake {
        newDice()
        resetDice()
    }
}

resetDice()将骰子的所有uiImageView设置为零,以便再次摇动设备时不会留下骰子。
func resetDice() {
    for var i=0; i<=5; ++i {
        dice[i].image = nil
    }
}

默认情况下,我将第一个骰子槽设置为1,以便测试resetDice()是否工作。
我正在使用iOS模拟器来运行这个应用程序,当它得到一个震动手势时,Xcode中记录的CPU使用率会上升到100%,RAM使用率(也记录在Xcode中)会缓慢上升,直到很长一段时间后应用程序崩溃,可能是因为内存不足。我试着运行这个程序,newDice()被注释掉了,它运行得很好。

最佳答案

在循环条件中,您有一个for(数字1)而不是1

for var i=1; 1<=amountOfNumbers; ++i {
    var diceNum: Int = Int(arc4random_uniform(6)) + 1
    diceDisplayed.append(diceNum)
}

更改为:
for var i=1; i<=amountOfNumbers; ++i {
    var diceNum: Int = Int(arc4random_uniform(6)) + 1
    diceDisplayed.append(diceNum)
}

实际上,Swift中循环的一个更好的语法是:
for i in 1...amountOfNumbers {
    var diceNum: Int = Int(arc4random_uniform(6)) + 1
    diceDisplayed.append(diceNum)
}

10-07 19:49
查看更多