Ila*_*rio 7 objective-c ios sprite-kit
这是我看到的错误SKScene,此错误随机发生,无法复制
*由于未捕获的异常'NSGenericException'而终止应用程序,原因:'* Collection <NSConcreteMapTable:0x1459da60>在枚举时发生了变异.
发生了什么?
告诉我你是否需要任何其他信息
谢谢
编辑:
*** First throw call stack:
(
0 CoreFoundation 0x025601e4 __exceptionPreprocess + 180
1 libobjc.A.dylib 0x022298e5 objc_exception_throw + 44
2 CoreFoundation 0x025efcf5 __NSFastEnumerationMutationHandler + 165
3 Foundation 0x01e47f03 -[NSConcreteMapTable countByEnumeratingWithState:objects:count:] + 66
4 CoreFoundation 0x0253d77f -[__NSFastEnumerationEnumerator nextObject] + 143
5 SpriteKit 0x01d009f2 +[SKTextureAtlas(Internal) findTextureNamed:] + 232
6 SpriteKit 0x01cf709c __26-[SKTexture loadImageData]_block_invoke + 1982
7 SpriteKit 0x01d34d09 _Z14SKSpinLockSyncPiU13block_pointerFvvE + 40
8 SpriteKit 0x01cf6898 -[SKTexture loadImageData] + 228
9 SpriteKit 0x01cf65d9 __51+[SKTexture preloadTextures:withCompletionHandler:]_block_invoke + 241
10 libdispatch.dylib 0x02b117b8 _dispatch_call_block_and_release + 15
11 libdispatch.dylib 0x02b264d0 _dispatch_client_callout + 14
12 libdispatch.dylib 0x02b14eb7 _dispatch_root_queue_drain + 291
13 libdispatch.dylib 0x02b15127 _dispatch_worker_thread2 + 39
14 libsystem_c.dylib 0x02de1e72 _pthread_wqthread + 441
15 libsystem_c.dylib 0x02dc9daa start_wqthread + 30
)
libc++abi.dylib: terminating with uncaught exception of type NSException
Run Code Online (Sandbox Code Playgroud)
我有时也会遇到同样的例外。它已经存在了一段时间了,几周来我一直在试图找出它。
我怀疑这可能是由于预加载纹理而发生的,无论是手动还是由 Sprite Kit 自动触发,同时其他一些代码会导致纹理被加载或访问。
我已经减少了 preloadTextures: 调用,但我仍然遇到这个问题,只是频率降低了。我尝试执行performSelector:onMainThread: 每当我运行一个选择器来从completionBlock 或在不同线程上运行的其他代码中访问或加载图像(或者可能只是在内部)。
在我将用户界面代码移至主线程(它是从完成处理程序调用)后,今天一整天都没有发生此崩溃。但我不能 100% 确定这是否解决了这个问题。
希望这会有帮助。肯定有一些棘手的事情发生,如果你这样做po 0x1459da60(在 lldb 的命令窗口中,使用异常提供的地址),你会看到正在修改的是 SKTextureAtlas 纹理列表。我希望这可以帮助您查明问题出在您这边。