我正在使用以下编译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/

10-12 13:37