这是我的代码(largeAsteroids.count从不为0):
var largeAsteroids=[[SKTexture]]()
func randomLargeAsteroidTextures()->Array<SKTexture>{
let i=Int(arc4random())%largeAsteroids.count
return largeAsteroids[i]// this line triggers EXC_BREAKPOINT
}
Run Code Online (Sandbox Code Playgroud)
当我执行我的代码时,我没有收到任何错误,但我收到了EXC_BREAKPOINT.我确保没有任何断点,在索引处我有一个有效的对象.

首先我将SKTexture更改为AnyObject,但没有帮助.然后我尝试使用NSMutableArray而不是swift数组,问题仍然存在:
var largeAsteroids=NSMutableArray()
func randomLargeAsteroidTextures()->AnyObject{
let i=Int(arc4random())%largeAsteroids.count
return largeAsteroids.objectAtIndex(i) // this line triggers EXC_BREAKPOINT
}
Run Code Online (Sandbox Code Playgroud)
更新:
问题解决了,替换:
let i=Int(arc4random())%largeAsteroids.count
Run Code Online (Sandbox Code Playgroud)
通过:
let i=Int(arc4random_uniform(UInt32(largeAsteroids.count)))
Run Code Online (Sandbox Code Playgroud)
感谢Matt的解决方案:
您可能应该使用arc4random_uniform.您将从当前的实现中获得模数偏差. - 马特吉布森