Var getter and setter confusion



我正在swift中进行一个项目。我知道getter/setter/didSet是如何处理变量的,但这不是我想要的。我的项目是一个SpriteKit游戏,我对应该做什么有点困惑。在objective-c中,我总是只创建SKSpriteNode的一个属性,然后使用getter方法实现来访问它。然而,在swift中,这是不能做到的。这就是我困惑的地方。以下是我如何设置它的。

我的主要问题是:当我在swift 中工作时,我应该只做这个"变通方法"吗

func planeNode() -> SKSpriteNode { // use instance var here }

或者应该在变量的getter方法中执行:

var plane: SKSpriteNode { get { // use separate SKSpriteNode here and just return }}

如有任何帮助,我们将不胜感激。

您可以创建一个由存储属性支持的计算属性-我在C#中经常使用这种模式:

private var _plane: SKSpriteNode
public var plane: SKSpriteNode { get { return _plane } set { _plane = newValue } }

但是请注意,您只需使用一个存储的属性即可实现相同的效果:

public var plane: SKSpriteNode

这与@synthesize语句在obj-c中发生的情况相同(由于已自动应用,现在已过时)。不同的是,支持数据成员可用于类(通常以下划线为前缀的属性名),而在swift中,该数据成员根本不可见。

附录想知道我是否误解了你的问题。你可能正在寻找一种方法来创建一个价值是经过计算的房产吗?如果是,则使用计算机属性:

public var plane: SKSpriteNode { get { return ... } }

最新更新