我正在使用以下编译Swift标记来识别减慢编译时间的代码:
-Xfrontend -warn-long-function-bodies=100
-Xfrontend -warn-long-expression-type-checking=100
然后在构建之后,我得到如下的
warnings
:Instance method 'startFadePositionTitle()' took 2702ms to type-check (limit: 500ms)
对于这部分代码:
func startFadePositionTitle() -> CGFloat {
let value: CGFloat = ((backgroundImage.frame.height/2 - contentTitle.frame.height/2) - navbarView.frame.height)/2
return value
}
有人可以向我解释这种方法有什么问题,我可以改进什么?
最佳答案
您应该将其分成较小的块,然后Swift可以更轻松地进行类型检查。另外,您讲的越多,Swift的思考就越少。因此,您可以帮助编译器并告诉它您已经知道的所有信息:
func beginFadePositionTitle() -> CGFloat {
let n: CGFloat = 2
let a: CGFloat = self.backgroundImage.frame.height/n
let b: CGFloat = self.contentTitle.frame.height/n
let ab: CGFloat = a - b
let c: CGFloat = self.navbarView.frame.height
let abc: CGFloat = ab - c
return abc/n
}
这是您将所有内容告诉编译器的结果。看到不同?
关于ios - 识别慢速代码以优化构建时间,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59005091/