Swift 3.0编译器和Sourcekitservice内存分配

and*_*zbr 5 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
}
Run Code Online (Sandbox Code Playgroud)

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

var distance: Double?
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

当我使用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
    })
}
Run Code Online (Sandbox Code Playgroud)

这种情况下的问题是当我使用minDistance对象时!和maxValue.如果我不使用这些变量,则不会出现问题.

SourceKitService内存分配: 在此输入图像描述 在此输入图像描述

有没有人遇到过类似的问题?