小编Yon*_*Ren的帖子

Swift阵列访问触发EXC_BREAKPOINT

这是我的代码(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.您将从当前的实现中获得模数偏差. - 马特吉布森

random breakpoints arc4random swift

3
推荐指数
1
解决办法
985
查看次数

标签 统计

arc4random ×1

breakpoints ×1

random ×1

swift ×1