EXC_BAD_ACCESS在SKView的.texture(从)与非零节点

问题描述:

EXC_BAD_ACCESS null异常我调用'SKView.texture(从:)',我明白(从地址0x0)是一个偶然的EXC_BAD_ACCESS (code=1, address=0x0)错误是空指针解引用。EXC_BAD_ACCESS在SKView的.texture(从)与非零节点

我打电话这样说:

view.texture(from: node) 

viewSKViewnodeSKNode,也不是零。这条线对于不同的节点被调用很多次,并且大部分时间都正常工作,但最终(通常当屏幕上有很多节点时)我会崩溃。从一个典型的碰撞

堆栈跟踪:

* 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 
    ... 

这是在Xcode 9.0(9A235)使用夫特4为iOS。

由于价格Ringo指出,跟踪清楚地表明,异常发生在initWithBackingTetxure:logicalWidth:height,这是一种奇怪的拼写SKTexture内部方法。

我的SKNode可能会导致此错误,我该如何防止它?

这并不是说节点或视图以某种方式为零,而是为什么initWithBackingTetxure:logicalWidth:height:访问权限为0.虽然可能存在缺陷的是库,但它更有可能是节点状态不佳。

+0

感谢您的帮助,这很有道理,但我无法理解节点可能出现什么问题。 'texture(from)'的文档只是说'SKNode',它甚至不必在视图的场景中。你能澄清一下节点的状态是什么意思吗? – Robert