我刚刚在我的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.如果我不使用这些变量,则不会出现问题.
有没有人遇到过类似的问题?
| 归档时间: |
|
| 查看次数: |
153 次 |
| 最近记录: |