2016-01-28 3 views
1

Я следую учебнику, чтобы плавать в сердцах, таких как Перископ.SKScene сбой приложения при закрытии контроллера вида

Link to Tutorial

Чтобы дать основной намек, я отправляю код ниже

let heartHeight: CGFloat = 18.0 

let heartsFile = "heart-bubbles.sks" 

class HeartBubblesScene : SKScene { 
var emitter: SKEmitterNode? 

override func didMoveToView(view: SKView) { 
    scaleMode = .ResizeFill // make scene's size == view's size 
    //backgroundColor = UIColor.clearColor() 
} 

func beginBubbling() { 

    emitter = SKEmitterNode(fileNamed: heartsFile) 

    let x = floor(size.width/2.0) 
    let y = heartHeight 

    emitter!.position = CGPointMake(x, y) 

    emitter!.name = "heart-bubbles" 
    emitter!.targetNode = self 

    emitter?.numParticlesToEmit = 1 

    addChild(emitter!) 

    emitter?.resetSimulation() 
} 

В моей viewdidload, у меня есть такой код, чтобы представить эту сцену

heartBubblesView.presentScene(heartBubblesScene) 

Где heartBubblesView является SKView, который я сделал через Outlet.

Проблема возникает, когда я туда и обратно к этому контроллеру; вдруг он упал и показывает мне ниже логична:

SpriteKit`std :: __ 1 :: __ tree_iterator *, Int> станд :: __ 1 :: __ дерево, станд :: __ 1 :: Распределитель> :: найти: 0x29fd0f4c < +0>: ldr r3, [r0, # 4]! 0x29fd0f50 < +4>: cbz r3, 0x29fd0f82; < +54> 0x29fd0f52 < +6>: ldr.w r12, [r1] 0x29fd0f56 < +10>: мы г9, r0 -> 0x29fd0f58 < +12>: LDR r2, [r3, # 0x10] 0x29fd0f5a < +14>: cmp r2, r12 0x29fd0f5c < +16>: bhs 0x29fd0f66; < +26> 0x29fd0f5e < +18>: LDR г3, [r3, # 0x4] 0x29fd0f60 < + 20>: CMP г3, # 0x0 0x29fd0f62 < + 22>: BNE 0x29fd0f58; < +12> 0x29fd0f64 < +24>: b 0x29fd0f70; < +36> 0x29fd0f66 < +26>: LDR г2, [r3] 0x29fd0f68 < + 28>: мы г9, г3 0x29fd0f6a < +30>: CMP г2, # 0x0 0x29fd0f6c < +32>: мы г3, r2 0x29fd0f6e < +34>: bne 0x29fd0f58; < +12> 0x29fd0f70 < +36>: cmp r9, r0 0x29fd0f72 < +38>: beq 0x29fd0f82; < +54> 0x29fd0f74 < +40>: ldr.w r2, [С9, # 0x10] 0x29fd0f78 < +44>: LDR r1, [r1] 0x29fd0f7a < +46>: CMP r1, r2 0x29fd0f7c < + 48>: it lo 0x29fd0f7e < +50>: movlo r9, r0 0x29fd0f80 < +52>: b 0x29fd0f84; < +56> 0x29fd0f82 < +54>: мы г9, r0 0x29fd0f84 < +56>: мы r0, г9 0x29fd0f86 < +58>: BX Л.Р.

Затем я попытался добавить Deinit выше класс

deinit 
{ 
    emitter?.targetNode = nil 
    emitter!.removeAllChildren() 

} 

Это не работает.

+0

Теги, которые вы использовали, не имеют отношения к этому вопросу. Проверьте [Что такое теги и как их использовать?] (// stackoverflow.com/help/tagging) – SmokeDispenser

ответ

0

Я не знаю, но я поставил этот ниже метод deinitialser, на мой взгляд, контроллер с удалением всех детей из этой SKScene, похоже, решает проблему.

deinit 
{ 
    heartBubblesScene.removeAllChildren() 
} 
Смежные вопросы