我有一個叫做changeBallColor()
的函數,每調用一次NSTimer就會調用它(它被設置爲2秒間隔)。目標是每2秒將球的顏色更改爲隨機顏色,而不必連續重複兩種顏色。除了顏色變化幾乎立即有時和其他時間需要4秒改變。當更改時間更長時,我注意到在xcode調試器中,CPU使用率在顏色變化之前瞬間達到99%。 arc4random_uniform()
需要一段時間才能完成或使用while循環(在使用while循環的情況下)?如果是這樣,我該如何優化這段代碼才能完美運行?對於Swift,我很抱歉,我是一個noob。Swift爲什麼我的NSTimer不能均勻地射擊?
func changeBallColor() {
var previousint: UInt32?
var randint = arc4random_uniform(4)
while previousint == randint {
randint = arc4random_uniform(4)
}
previousint = randint
if previousint == 0 {
imageBall.image = UIImage(named: "circle_g.png")
} else if previousint == 1 {
imageBall.image = UIImage(named: "circle_b.png")
} else if previousint == 2 {
imageBall.image = UIImage(named: "circle_r.png")
} else if previousint == 3 {
imageBall.image = UIImage(named: "circle_y.png")
}
}
你不打兩次相同顏色的邏輯是錯誤的,因爲'previousint'是一個局部變量。考慮添加'print'語句,告訴你在循環中哪些隨機數被擊中以及循環被執行的頻率(總是0次)等等。 – luk2302
噢,呃......每當NSTimer開火時都會重新聲明'previousint'它起來。將它移到我的ViewController類的頂部,它現在完美運行。謝謝你,併爲這樣一個愚蠢的問題浪費你的時間感到抱歉。 – modernwar24