SKView的.texture(from)中的EXC_BAD_ACCESS null异常,带有非nil节点

时间:2017-09-30 08:59:15

标签: ios swift exc-bad-access

我在调用'SKView.texture(来自:)时遇到EXC_BAD_ACCESS (code=1, address=0x0)错误,我理解(从地址0x0)是一个空指针解除引用。

我这样称呼它:

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)中使用Swift 4 for iOS。

正如Price Ringo指出的那样,跟踪清楚地表明异常发生在initWithBackingTetxure:logicalWidth:height中,这是一种奇特拼写的SKTexture内部方法。

导致此错误的SKNode可能有什么问题,我该如何预防?

1 个答案:

答案 0 :(得分:-1)

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