실제 코드를 보여 드릴 것입니다. 도우미 :서브 클래스의 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의 서브 클래스 내부의 gameState 변수를 정의 할 때 나는 누출을 얻고 있다는 것입니다 : 다른 하나는 동일한 구조를 가지고있다. 그러나 하위 클래스를 사용하지 않고 대신 GameScene을 SKScene의 직접 하위 클래스로 만들면 모든 것이 작동합니다. 문제는 내 프로젝트에 도움이 필요하므로 방정식에서 벗어날 수 없다는 것입니다. 아무도 제안이 있습니까?