我在调用'SKView.texture(来自:)时遇到EXC_BAD_ACCESS (code=1, address=0x0)
错误,我理解(从地址0x0)是一个空指针解除引用。
我这样称呼它:
view.texture(from: node)
view
是SKView
,node
是SKNode
,也不是。对于不同的节点,这条线被多次调用并且大部分时间都能正常工作,但最终(通常当屏幕上有很多节点时)我会崩溃。
典型崩溃的堆栈跟踪:
* 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
可能有什么问题,我该如何预防?
答案 0 :(得分:-1)
节点或视图不是以某种方式为零,而是为什么initWithBackingTetxure:logicalWidth:height:
访问0.虽然库可能存在缺陷,但节点的状态更可能是坏的