Var getter和setter混乱

时间:2014-08-26 20:14:03

标签: swift sprite-kit

我正在快速开展一个项目。我知道getter / setter / didSet如何适用于变量,这不是我想要的。我的项目是一个SpriteKit游戏,我对应该做什么感到困惑。在objective-c中,我总是创建一个SKSpriteNode的属性,然后使用getter方法实现来访问它。然而,在迅速,这是不可能做到的。这就是我困惑的地方。以下是我已经设置好的方法。

我的主要问题是:在swift

工作时,我是否应该这样做“解决方法”
func planeNode() -> SKSpriteNode { // use instance var here }

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

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

感谢任何帮助

1 个答案:

答案 0 :(得分:1)

您可以创建一个由存储属性支持的计算属性 - 我在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 ... } }