如您所见,我在编译器中没有设置断点.它只是倾向于停在第31行.日志中没有任何内容可以解释此崩溃的原因,如果有一个开始的话.
我习惯于在main.m中使用Thread 1:SIGABRT和日志中的NSException停止Objective-C,但这没有任何意义.有人可以解释一下是什么问题吗?
编辑:这里有更多的截图,以证明我没有设置断点.当我得到一个异常时,它只会抛出一个断点.
解决方法 发生这种异常是因为arc4random()返回了UInt32并且你正在减去它的值,这可能导致负值,这不能表示为无符号整数.要解决此问题,您可能希望在减去以下之前将表达式强制转换为Int32:
var y = CGfloat(self.size.height / 3) + CGfloat((Int32)(arc4random() % 100) - 50)
关于上面的x值 – 您创建CGfloat并且仅在此之后减去,因此不会遇到上述情况.因此,不同的解决方案如下
var y = CGfloat(self.size.height / 3) + CGfloat(arc4random() % 100) - 50
你基本上必须确保在你减去某些东西时你没有无符号类型.
令人烦恼的是,编译器没有警告你,并且代码实际上有时会工作,每当arc4random返回大于50的东西时,因此不会漂移到负值…
结合反馈和建议你不应该使用arc4random%,最好的解决方案是使用arc4random_uniform.
arc4random%something不会产生随机值的正确分布,而arc4random_uniform(某事)确实 – this has already been discussed on SO before.
最后一点:你可能应该选择101作为上限而不是100,因为arc4random和arc4random_uniform都会产生一个介于0和(upper-1)之间的值,例如: 0和99.如果减去50,则得到介于-50和49之间的值.选择101将得到-50到50的所需范围.
var y = CGfloat(self.size.height / 3) + CGfloat(arc4random_uniform(101)) - 50总结
以上是内存溢出为你收集整理的ios – Swift中奇怪的断点异常是怎么回事?全部内容,希望文章能够帮你解决ios – Swift中奇怪的断点异常是怎么回事?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)