我在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。如果我不使用这些变量,问题就不会发生。
任何人都遇到过类似的问题?