我正在快速开展一个项目。我知道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 }}
感谢任何帮助
答案 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 ... } }