これは私のプログラミング理解の範囲外です。この概念を理解する助けがあれば、非常に感謝しています。オブジェクト変数を別の変数へのポインタにする
私が持っているものは、レイヤークラスFloaterContainerLayerです。
class FloaterContainerLayer:CALayer {
var gravity:CGFloat = 5.0
var maxFloaters = 9
var image:String?
var velocity:CGFloat = 50.0
}
私は、このクラスの3つのインスタンスを常に持っています。それらの1つは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")
}
}
ここで、この値はいつでも変更できます。私はdotLayer.gravity
を1秒間に60回呼び出すビューレンダリング方法で使用します。私は dotLayer.gravity = dotLayerGravity
を設定し、 dotLayer.gravity
を呼び出す
、
が、私はそれがdotLayerGravity
を返すようにしたい:私は達成したい何
は、ということです。
クラス内の重力変数をdotLayerGravity
に設定することは、クラスが3つのインスタンスに対して使用されるため、オプションではありません。
それは良い入力がたくさんあります。私はUserDefaultsの部分を恐れていることを認識していましたが、それが後で問題になると思いました。私が読んだところでは、問題を扱うかなりOKのキャッシュを維持していますが、必要ならば私はあなたのソリューションを使用します。 CGFloatsに関してポイントできない点については、これについては確かですか?私はここでそれを使っている他の人を見つけました。 –
@OscarApeland私は彼らがポイント可能ではないとは言っていませんでした(それが何であるかは分かりません)。彼らは参照型ではないので、ポインタの振る舞いは自分ではありません。 –
ああ。私はあなたを誤解していた、私はお詫び申し上げます。 NSUserDefaultsの部分についても、フレーム0から100%のCPU使用率が正しいことが分かります。 –