[英]Why people add .0 on CGFloat?
button.widthAnchor.constraint(equalToConstant: 44.0).isActive = true
常量键入“44.0”而不是“44”。
它们之间有什么区别吗?
我测量了方法的时间。
func evaluateProblem(problemNumber: Int, problemBlock: () -> Void)
{
print("Evaluating problem \(problemNumber)")
let start = DispatchTime.now() // <<<<<<<<<< Start time
let end = DispatchTime.now() // <<<<<<<<<< end time
let nanoTime = end.uptimeNanoseconds - start.uptimeNanoseconds // <<<<< Difference in nano seconds (UInt64)
print("Time to evaluate problem \(problemNumber): \(nanoTime)")
}
evaluateProblem(problemNumber: 2) {
let b: CGFloat = 44
print(b)
}
evaluateProblem(problemNumber: 1) {
let a: CGFloat = 44.0
print(a)
}
但更快的不是固定的。
您可以使用 integer 文字初始化Double
、 Float
、 CGFloat
、 Int
等,因为上述所有内容都符合ExpressibleByIntegerLiteral协议。 在幕后使用字面量初始化只需调用符合类型的init(integerLiteral:)
方法。
同样,有一个ExpressibleByFloatLiteral协议处理浮点字面量的初始化,并且该协议有一个初始化器,它也必须由符合类型实现。
至于使用哪个,这是个人喜好和风格的问题。 两种初始化方式都是有效的,除非您进行数千次初始化,否则性能差异可以忽略不计。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.