为什么以下代码在iPhone 5而不是iPhone 5S上崩溃?

雪人
func rand(max: Int?) -> Int {
    var index = Int(arc4random())
    return max? != nil ? (index % max!) : index
}

我在最后一行遇到异常: EXC_BAD_INSTRUCTION

我猜测这与以下事实有关:iPhone 5S是64位而iPhone 5S不是64位,但是我看不到上面处理64位的函数中的任何内容吗?

编辑

通过以下调整,我可以解决此问题,但是我仍然无法解释原因。

func rand(max: Int?) -> Int {
    var index = arc4random()
    return max? != nil ? Int(index % UInt32(max!)) : Int(index)
}
内特·库克(Nate Cook)

Int整数类型是在iPhone 5 32位整数,在一个5S 64位整数。由于arc4random()返回的UInt32值是IntiPhone 5的正范围的两倍,因此您的第一个版本基本上有50%的机率在此行崩溃:

var index = Int(arc4random())

修改后的版本将等待转换,直到您使用取模和为止max,因此可以安全地转换到Int那里。您应该签出arc4random_uniform,它为您处理模数,并避免当前实现中固有的偏差。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在xcode(5、5c,5s)上识别新的iPhone型号

来自分类Dev

TouchID在某些iPhone 5S设备上崩溃

来自分类Dev

TouchID在某些iPhone 5S设备上崩溃

来自分类Dev

在iPhone 5s 64位上运行32位库

来自分类Dev

AVAudioRecorder无法在iPhone 5S上运行

来自分类Dev

应用未在iPhone 5s上安装

来自分类Dev

在使用iOS 7的iPhone 5s上写入/ dev / null时,AVAudioRecorder停止工作

来自分类Dev

将UITableView调整为iPhone 5 / 5s

来自分类Dev

UIButton不会出现在iPhone 5S上

来自分类Dev

应用程序在iPhone 5S上崩溃,但在iPhone 4S上没有崩溃。

来自分类Dev

Theos tweak在iPhone 5s上有效,但在iPad 3上无效

来自分类Dev

如何在iOS 7.1.1 / iPhone 5s上更改导航栏按钮的颜色

来自分类Dev

从iPhone 5 / 5s相机拍摄的UIImage多少点

来自分类Dev

iOS 8代码可在iPhone 5s上运行,但不能在iPhone 5上运行

来自分类Dev

iPhone 5S上的iOS 7.1.2中未出现UITableViewCells

来自分类Dev

离子ios应用程序停留在初始屏幕上-在模拟器中工作而不是在iPhone 5s设备上

来自分类Dev

Iphone 5s iOS 8.1.2从XIB加载视图控制器时崩溃

来自分类Dev

为什么以下代码打印5而不是6?

来自分类Dev

应用未在iPhone 5s上安装

来自分类Dev

尝试使用MonoTouch / iPhone 5s录制120fps视频时崩溃

来自分类Dev

将UITableView调整为iPhone 5 / 5s

来自分类Dev

在64位5s iPhone上安装时,为什么应用程序卡住

来自分类Dev

应用程序在iPhone 5S上崩溃,但在iPhone 4S上没有崩溃。

来自分类Dev

Memcpy仅在iPhone 5s上崩溃

来自分类Dev

CABasicAnimation无法在设备(iPhone 5s)上运行

来自分类Dev

投射null变量时,为什么iPhone 5S和iPad Air之前的设备不会崩溃?

来自分类Dev

iPhone 5s的偏航范围

来自分类Dev

method_getImplementation在64位iPhone 5s上崩溃

来自分类Dev

iOS OpenGLES无法在iPhone 5s +上渲染图像

Related 相关文章

  1. 1

    在xcode(5、5c,5s)上识别新的iPhone型号

  2. 2

    TouchID在某些iPhone 5S设备上崩溃

  3. 3

    TouchID在某些iPhone 5S设备上崩溃

  4. 4

    在iPhone 5s 64位上运行32位库

  5. 5

    AVAudioRecorder无法在iPhone 5S上运行

  6. 6

    应用未在iPhone 5s上安装

  7. 7

    在使用iOS 7的iPhone 5s上写入/ dev / null时,AVAudioRecorder停止工作

  8. 8

    将UITableView调整为iPhone 5 / 5s

  9. 9

    UIButton不会出现在iPhone 5S上

  10. 10

    应用程序在iPhone 5S上崩溃,但在iPhone 4S上没有崩溃。

  11. 11

    Theos tweak在iPhone 5s上有效,但在iPad 3上无效

  12. 12

    如何在iOS 7.1.1 / iPhone 5s上更改导航栏按钮的颜色

  13. 13

    从iPhone 5 / 5s相机拍摄的UIImage多少点

  14. 14

    iOS 8代码可在iPhone 5s上运行,但不能在iPhone 5上运行

  15. 15

    iPhone 5S上的iOS 7.1.2中未出现UITableViewCells

  16. 16

    离子ios应用程序停留在初始屏幕上-在模拟器中工作而不是在iPhone 5s设备上

  17. 17

    Iphone 5s iOS 8.1.2从XIB加载视图控制器时崩溃

  18. 18

    为什么以下代码打印5而不是6?

  19. 19

    应用未在iPhone 5s上安装

  20. 20

    尝试使用MonoTouch / iPhone 5s录制120fps视频时崩溃

  21. 21

    将UITableView调整为iPhone 5 / 5s

  22. 22

    在64位5s iPhone上安装时,为什么应用程序卡住

  23. 23

    应用程序在iPhone 5S上崩溃,但在iPhone 4S上没有崩溃。

  24. 24

    Memcpy仅在iPhone 5s上崩溃

  25. 25

    CABasicAnimation无法在设备(iPhone 5s)上运行

  26. 26

    投射null变量时,为什么iPhone 5S和iPad Air之前的设备不会崩溃?

  27. 27

    iPhone 5s的偏航范围

  28. 28

    method_getImplementation在64位iPhone 5s上崩溃

  29. 29

    iOS OpenGLES无法在iPhone 5s +上渲染图像

热门标签

归档