这是远远不能达到我的编程理解,所以任何帮助理解这个概念将非常赞赏。使对象变量指向另一个变量
我所拥有的是一个图层类FloaterContainerLayer。
class FloaterContainerLayer:CALayer {
var gravity:CGFloat = 5.0
var maxFloaters = 9
var image:String?
var velocity:CGFloat = 50.0
}
我在任何时候都有这个类的三个实例。其中之一是dotLayer。
lazy var dotLayer : FloaterContainerLayer = {
let scrollLayer = FloaterContainerLayer()
scrollLayer.bounds = self.view.layer.bounds
scrollLayer.position = CGPoint(x: self.view.bounds.size.width/2, y: self.view.bounds.size.height/2)
scrollLayer.image = "dot"
scrollLayer.gravity = dotLayerGravity
return scrollLayer
}()
别的地方,我有一个重力变量的点层。
var dotLayerGravity: CGFloat {
get {
if let stored = userDefaults.objectForKey("dotLayerGravity") {
return CGFloat(stored as! NSNumber)
}
else {
return 10.0
}
}
set(value) {
userDefaults.setValue(value, forKey: "dotLayerGravity")
}
}
现在,这个值可以在任何时候改变。我在每秒调用60次的视图渲染方法中使用dotLayer.gravity
。
我想完成的是:
当我设置 dotLayer.gravity = dotLayerGravity
,并呼吁 dotLayer.gravity
,
我想它返回dotLayerGravity
。
仅将类中的重力变量设置为dotLayerGravity
不是一个选项,因为该类用于三个实例。
这就是很多很好的输入。我知道并且害怕UserDefaults部分,如果这是一个问题,我认为我稍后会处理它。从我读过的内容来看,它保持着一个很好的缓存来处理这个问题,但如果必须的话,我会使用你的解决方案。 关于CGFloats不可指向性,你确定吗?我发现其他人在这里使用它。 –
@OscarApeland我没有说他们不是可指向的(甚至不知道是什么),他们只是不是引用类型,所以他们没有自己的指针行为。 –
哦。我误解了你,我很抱歉。原来你对NSUserDefaults部分也是正确的,从第0帧开始100%的CPU使用率。 –