2017-09-30 4 views
0

Je reçois occasionnellement une erreur EXC_BAD_ACCESS (code=1, address=0x0) lors de l'appel de 'SKView.texture (from :)', que je comprends (à partir de l'adresse 0x0) comme étant un déréférencement null pointeur.Exception nulle EXC_BAD_ACCESS dans SKView .texture (from) avec noeud non nul

J'appelle comme ceci:

view.texture(from: node) 

view est un SKView et node est un SKNode, ni est nulle. Cette ligne est appelée plusieurs fois pour différents nœuds et fonctionne très bien la plupart du temps, mais finalement (généralement quand il y a beaucoup de nœuds sur l'écran), je reçois un plantage.

trace de la pile d'un accident typique:

* thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x0) 
    frame #0: 0x0000000199b1da3c SpriteKit`-[SKTexture(Internal) initWithBackingTetxure:logicalWidth:height:] + 76 
    frame #1: 0x0000000199baeff0 SpriteKit`SKCRenderer::textureFromNode(SKCNode*, float, NSDictionary*) + 1052 
    frame #2: 0x0000000199b2e428 SpriteKit`-[SKView textureFromNode:withOptions:] + 124 
    frame #3: 0x0000000199b2e39c SpriteKit`-[SKView textureFromNode:] + 24 
    * frame #4: 0x0000000104bf3534 Worf`SpriteComponent.texture(node=0x00000001c03113a0, self=0x00000001c0541e40) at SpriteComponent.swift:175 
    ... 

C'est dans Xcode 9.0 (9A235) en utilisant Swift 4 pour iOS. Comme le souligne Price Ringo, la trace indique clairement que l'exception se produit dans initWithBackingTetxure:logicalWidth:height, une méthode interne de SKTexture curieusement épelée.

Quel pourrait être le problème avec mon SKNode qui causerait cette erreur, et comment puis-je l'empêcher?

Répondre

-1

Ce n'est pas que le nœud ou la vue est en quelque sorte nul mais plutôt pourquoi initWithBackingTetxure:logicalWidth:height: accède à 0. Alors qu'il est possible qu'il y ait un défaut dans la bibliothèque, il est beaucoup plus probable que l'état de votre nœud soit mauvais.

+0

Merci pour votre aide, c'est logique, mais j'ai de la difficulté à comprendre ce qui pourrait ne pas fonctionner avec le nœud. La documentation pour 'texture (from)' dit juste un 'SKNode', et il n'a même pas besoin d'être dans la scène de la vue. Pouvez-vous clarifier ce que cela signifie pour l'état d'un nœud d'être mauvais? – Robert