EXC_BAD_ACCESS SKView 的 .texture(from) 中具有非 nil 节点的空异常



我在调用'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)中使用iOS的Swift 4。

正如Price Ringo指出的那样,痕迹清楚地表明,initWithBackingTetxure:logicalWidth:height中发生了例外,这是一种奇怪的拼写的Sktexture的内部方法。

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

不是nil的节点或视图,而是 initWithBackingTetxure:logicalWidth:height:访问0。您的节点不好。

最新更新