我在调用'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)中使用iOS的Swift 4。
正如Price Ringo指出的那样,痕迹清楚地表明,initWithBackingTetxure:logicalWidth:height
中发生了例外,这是一种奇怪的拼写的Sktexture的内部方法。
我的SKNode
可能会导致此错误,我该如何防止它?
不是nil的节点或视图,而是 initWithBackingTetxure:logicalWidth:height:
访问0。您的节点不好。