ios – NSGenericException reason Collection

这是我在出现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

解决方法

我偶尔会得到同样的例外.它已经存在了一段时间,我一直在努力查明它数周.

我怀疑是由于预加载纹理可能会发生,无论是手动还是由Sprite Kit自动触发,同时其他一些代码会导致纹理被加载或访问.

我已经减少了我的preloadTextures:调用单个,但我仍然得到问题,只是不那么频繁.我曾尝试执行Selector:onMainThread:每当我运行一个选择器,它可以在completionBlock或其他运行在不同线程上的代码中访问或加载图像(或者只是内部).

在我将用户界面代码移动到主线程(它是从完成处理程序调用)之后,我今天整天都没有遇到此崩溃.我不能100%确定这是否能解决这个问题.

希望这会有帮助.肯定会有一些挑剔的事情发生,如果你做了po 0x1459da60(在lldb的命令窗口中,使用异常提供的地址),你会看到它正在被修改的SKTextureAtlas纹理列表.我希望这可以帮助您确定问题来自哪方面.

相关文章

当我们远离最新的 iOS 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...