小编and*_*zbr的帖子

Swift 3.0编译器和Sourcekitservice内存分配

我刚刚在我的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) -> …
Run Code Online (Sandbox Code Playgroud)

ios swift3 xcode8

5
推荐指数
0
解决办法
153
查看次数

标签 统计

ios ×1

swift3 ×1

xcode8 ×1