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