下面的代码工作得很好,但我很惊讶,因为我认为NSCache
需要对象键和值,而不需要CGFloat
s。有人可以向我解释发生了什么吗?
class A
var cachedPoints = NSCache()
func rAt(theta theta: CGFloat) -> CGFloat {
if let r = self.cachedPoints.objectForKey(theta) as? CGFloat {
return r
}
// do some very expensive maths here...
let r = self.veryExpensiveFunction(theta)
self.cachedPoints.setObject(r, forKey: theta)
return r
}
}