Исключение нулевого указателя генерируется, когда приложение пытается использовать null в случае, когда требуется объект. К ним относятся:
null
. null
. null
, как если бы это был массив. null
, как если бы это был массив. null
как будто это было значение Throwable. Приложения должны бросать экземпляры этого класса, чтобы указать на другие незаконные использования объекта null
.
Ссылка: http://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html
Как вы знаете, Float
имеет только 24-битовое значение, поэтому 32-битное значение 0xFFFFFFFF будет усечено. Итак, Swift предупреждает вас, что Float
не может точно представлять значение 0xFFFFFFFF
.
Краткое исправление было бы примерно таким:
let randomValue: CGFloat = CGFloat(Float(arc4random()) / Float(0xFFFFFFFF))
При использовании Float.init
в явном виде Swift не будет генерировать такие предупреждения.
Но предпочтительным способом было бы использовать метод random(in:)
, как предложено в ответе Мэтта:
return CGFloat(Float.random(in: from...to))
или просто:
return CGFloat.random(in: from...to)
Самое простое решение: отказаться от своего кода и просто позвонить https://developer.apple.com/documentation/coregraphics/cgfloat/2994408-random .