首页 > 解决方案 > 识别慢代码以优化构建时间

问题描述

我正在使用这些Compilation Swift Flag来识别减慢编译时间的代码:

-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
    }

有人能解释一下这种方法有什么问题吗?我可以改进什么?

标签: iosswiftxcode

解决方案


你应该把它分成更小的块,然后 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
}

实例方法“beginFadePositionTitle()”需要 1毫秒进行类型检查(限制:1 毫秒)

这是您将所有内容都告诉编译器时的结果。看到不同?


推荐阅读