Я использую NSNotificationCenter, чтобы контролировать таймер в SpriteKit. Код запускается нормально, когда я впервые вхожу в SKScene, но когда я пытаюсь повторно ввести SKScene, я получаю ошибку EXC_BAD_ACCESS. Я думаю, что это связано с функцией removeObserver. Я не уверен, когда удалять наблюдателя, я пытался сделать это в функции prepareForSegue без успеха. Мой ViewController выглядит следующим образом:NSNotificationCenter, вызывающий ошибку EXC_BAD_ACCESS с помощью SpriteKit
class JobStartedViewController: UIViewController {
var titleOfJob: String = ""
override func viewDidLoad() {
super.viewDidLoad()
let skView = self.view as! SKView
let scene:SKScene = GameScene.init(size: skView.bounds.size)
NSNotificationCenter.defaultCenter().postNotificationName("stopTimerNotification", object: nil)
NSNotificationCenter.defaultCenter().postNotificationName("startTimerNotification", object: nil)
/* Sprite Kit applies additional optimizations to improve rendering performance */
skView.ignoresSiblingOrder = true
/* Set the scale mode to scale to fit the window */
scene.scaleMode = .AspectFill
skView.presentScene(scene)
}
и я добавить наблюдателей на мой GameScene.swift следующим образом:
class GameScene: SKScene {
override func didMoveToView(view: SKView) {
NSNotificationCenter.defaultCenter().addObserver(self, selector: "stopTimerInBackground:", name:"stopTimerNotification", object: nil)
NSNotificationCenter.defaultCenter().addObserver(self, selector: "startTimerInBackground:", name:"startTimerNotification", object: nil)
Вам необходимо убрать наблюдателей в 'deinit'. –