Swift 3.0编译器和Sourcekitservice内存分配

时间:2016-12-19 12:54:01

标签: ios swift3 xcode8

我在iOS swift 3项目中遇到了一个陌生人问题。

方案:

我有一个列表os对象,objets有一个属性,如下所示:

var total: Double {
    var sum = 0.0
    for item in self.products! {
        sum += item.price ?? 0
    }
    return sum
}

在同一个类中存在另一个名为distance的属性:

var distance: Double?

当我找到距离的最大值时,我的项目编译工作正常,如:

let minDistance = est?.max(by: { (e1, e2) -> Bool in
    return e1.distance! < e2.distance!
})

然而,当我尝试找到最大值prive时,我的项目编译变得太慢并且在swift和sourcekitservice进程中消耗了大量内存(更多40 GB)。

let maxValue = est?.max(by: { (e1, e2) -> Bool in
    return e1.total < e2.total
})

当我使用if let块时,它可以正常工作:

if let e = est {
    let minDistance = e.max(by: { (e1, e2) -> Bool in
        return e1.distance! < e2.distance!
    })
    let maxValue = est?.max(by: { (e1, e2) -> Bool in
        return e1.total < e2.total
    })
}

这种情况下的问题是当我使用minDistance对象时!和maxValue。如果我不使用这些变量,问题就不会发生。

SourceKitService内存分配: enter image description here enter image description here

任何人都遇到过类似的问题?

0 个答案:

没有答案