GKStateMachineにリークの問題があります。 私のアプリケーションは、問題をテストするためのまっすぐなコードです。これはGameSceneです:GameplayKitでGKStateMachineを使用したリーク
import SpriteKit
import GameplayKit
class GameScene: SKScene {
lazy var gameState:GKStateMachine = GKStateMachine(states: [Introduction(scene: self)])
override func didMove(to view: SKView) {
self.gameState.enter(Introduction.self)
}
}
そして、これは私の状態です:
import SpriteKit
import GameplayKit
class Introduction: GKState {
unowned let scene:GameScene
init(scene:SKScene) {
self.scene = scene as! GameScene
super.init()
}
override func didEnter(from previousState: GKState?) {
print("INSIDE THE Introduction STATE")
}
}
問題は、私はリークデバッガを実行したとき、私はできるだけ早く私は状態に入るように、1つの漏れを受けたということです。誰か に提案がありますか?
Introductionクラスで 'weak var scene:GameScene? 'を使ってみてください。それは漏れを取り除く。それでも私は本当の原因を見つけていません。インストゥルメントで見ることができる 'swift_unknowUnownedInit'呼び出しがあります。そして、私はSwiftソースを調べて、何が起こっているのかを調べる気がしませんでした:)そうでなければ、あなたのコードは良いようです。 'GameScene'が(次のシーンへの移行時に)割り当てを解除すると、シーンと導入インスタンスは適切に割り当て解除されます(導入インスタンスは' unowned'キーワードの使用によりシーンを保持しません)。 – Whirlwind
それは動作するようです。ありがとうございました。今私は元のコードを試してみるつもりです。私が問題を最初に見つけた場所。 – iOSTony
元のコードでは機能しませんでした。本当に奇妙なことがあります。すべてのウェブサイトによると、私はそれがすべきであるすべてをやっています。しかし、決定的な解決策はありません。 – iOSTony