1
我會告訴你我的實際代碼。它有三個要素:一個助手:在子類中使用GKStateMachine泄漏
import SpriteKit
import GameplayKit
class GameSceneHelper: SKScene {
override func didMove(to view: SKView) {
}
}
一些遊戲的狀態助手的一個子類:
import SpriteKit
import GameplayKit
class GameScene: GameSceneHelper {
lazy var gameState:GKStateMachine = GKStateMachine(states: [
Introduction(scene: self),
SecondState(scene: self) ])
override func didMove(to view: SKView) {
self.gameState.enter(Introduction.self)
}
}
和各州。在這裏,我介紹其中之一。其他具有相同的結構:
import SpriteKit
import GameplayKit
class Introduction: GKState {
weak var scene:GameScene?
init(scene:SKScene) {
self.scene = scene as? GameScene
super.init()
}
override func didEnter(from previousState: GKState?) {
print("INSIDE THE Introduction STATE")
}
}
的問題是,我得到一個泄漏時,我定義GameSceneHelper的子類裏面的遊戲狀態變量。但是,如果我不使用子類,而是使GameScene成爲SKScene的直接子類,則一切正常。問題是,對於我的項目,我需要助手,所以我不能將其排除在等式之外。 有人有什麼建議嗎?