Swift code doesn't work on iPhone 5

270 Views Asked by At

I just finished my swift game and I would try it on all devices. I just note that, before the iPhone 5S, all device doesn't work with arc4random. The iPhone 5 is a 32bit device and arc4randomreturn a UInt32 and it will cause an overflow if the random number is too big. I tried to replace arc4random by arc4random_uniform as onevcat said here. But still doesn't work.

See my code and a screen shot error bellow :

var lastYieldTimeInterval:NSTimeInterval = NSTimeInterval()
var lastUpdatetimeInterval:NSTimeInterval = NSTimeInterval()
var lastUpdatetimeIntervalBl:NSTimeInterval = NSTimeInterval()
var lastYieldTimeIntervalrou:NSTimeInterval = NSTimeInterval()
var lastYieldTimeIntervalro:NSTimeInterval = NSTimeInterval()
var lastYieldTimeIntervalj:NSTimeInterval = NSTimeInterval()
var lastYieldTimeIntervalvio:NSTimeInterval = NSTimeInterval()
var lastYieldTimeIntervalv:NSTimeInterval = NSTimeInterval()
var lastYieldTimeIntervalora:NSTimeInterval = NSTimeInterval()
var lastYieldTimeIntervaln:NSTimeInterval = NSTimeInterval()
var lastYieldTimeIntervalGold:NSTimeInterval = NSTimeInterval()


func updateWithTimeSinceLastUpdate(timeSinceLastUpdate:CFTimeInterval){


    let minInterval = UInt32(0)
    let maxInterval = UInt32(1500)
    let rangeInterval = UInt32(maxInterval - minInterval)




    lastYieldTimeInterval += timeSinceLastUpdate
    let intervalbl = Int(arc4random_uniform(rangeInterval)) + Int(minInterval)
    if (lastYieldTimeInterval > NSTimeInterval(intervalbl)){
        lastYieldTimeInterval = 0
        addBalloonbl()

    }

    lastYieldTimeIntervalj += timeSinceLastUpdate

    let intervalj = Int(arc4random_uniform(rangeInterval)) + Int(minInterval)
    if (lastYieldTimeIntervalj > NSTimeInterval(intervalj)){
        lastYieldTimeIntervalj = 0
        addBalloonj()
        }

    lastYieldTimeIntervalora += timeSinceLastUpdate
    let intervalora = Int(arc4random_uniform(rangeInterval)) + Int(minInterval)
    if (lastYieldTimeIntervalora > NSTimeInterval(intervalora)){
        lastYieldTimeIntervalora = 0
        addBalloonora()
    }


    lastYieldTimeIntervalrou += timeSinceLastUpdate
    let intervalrou = Int(arc4random_uniform(rangeInterval)) + Int(minInterval)
    if (lastYieldTimeIntervalrou > NSTimeInterval(intervalrou)){
        lastYieldTimeIntervalrou = 0
        addBalloonrou()
    }


    lastYieldTimeIntervalro += timeSinceLastUpdate
    let intervalro = Int(arc4random_uniform(rangeInterval)) + Int(minInterval)
    if (lastYieldTimeIntervalro > NSTimeInterval(intervalro)){
        lastYieldTimeIntervalro = 0
        addBalloonro()
    }


    lastYieldTimeIntervalvio += timeSinceLastUpdate
    let intervalvio = Int(arc4random_uniform(rangeInterval)) + Int(minInterval)
    if (lastYieldTimeIntervalvio > NSTimeInterval(intervalvio)){
        lastYieldTimeIntervalvio = 0
        addBalloonvio()
    }


    lastYieldTimeIntervalv += timeSinceLastUpdate
    let intervalv = Int(arc4random_uniform(rangeInterval)) + Int(minInterval)
    if (lastYieldTimeIntervalv > NSTimeInterval(intervalv)){
        lastYieldTimeIntervalv = 0
        addBalloonv()
    }


    let minIntervalBl = 1
    let maxIntervalBl = 3000
    let rangeIntervalBl = maxIntervalBl - minIntervalBl


    lastYieldTimeIntervaln += timeSinceLastUpdate
    let intervaln = Int(arc4random()) % Int(rangeIntervalBl) + Int(minIntervalBl)
    if (lastYieldTimeIntervaln > NSTimeInterval(intervaln)){
        lastYieldTimeIntervaln = 0
        addBalloonnoir()
    }

    let minIntervalGold = 4
    let maxIntervalGold = 3000
    let rangeIntervalGold = maxIntervalGold - minIntervalGold


    lastYieldTimeIntervalGold += timeSinceLastUpdate
    let intervalGold = Int(arc4random()) % Int(rangeIntervalGold) + Int(minIntervalGold)
    if (lastYieldTimeIntervalGold > NSTimeInterval(intervalGold)){
        lastYieldTimeIntervalGold = 0
        addBalloongold()
    }

} 

enter image description here

1

There are 1 best solutions below

0
On

I found why this doesn't work. Actually it is not timesincelastupdate but still the arc4random. I forgot to replace it on two lines. Now Everything is working...

Thank you for your help