我正在尝试将一些第三方SceneKit代码集成到我的应用程序中,而且我正在经历一次神秘的崩溃。奇怪的是,崩溃没有错误或登录Xcode,堆栈跟踪只是“UIApplicationMain”。那里没有任何有用的信息。
代码在我得到它的第三方应用程序中工作,我已经批量复制了,所以我知道它必须是一些委托调用或一些我没有包含的框架等等。但这是我的第一个使用SceneKit的经验让我无法理解它可能是什么。
在用户点击屏幕并将新3D对象添加到场景的事件期间发生崩溃。我已经破坏了所有相关的方法,并且崩溃似乎发生在中间时间,可能是内部的SceneKit功能,所以我无法确定它。
我的Crashlytics报告确实收到了一些信息,我已经在这里提供了一些信息:
Thread : Crashed: com.apple.main-thread
0 libobjc.A.dylib 0x00981ea8 _objc_empty_cache
1 SceneKit 0x015e0273 __28-[SCNPhysicsBody _setOwner:]_block_invoke + 214
2 SceneKit 0x016b05b5 C3DTransactionFlush + 2014
3 CoreFoundation 0x00bff86e __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 30
4 CoreFoundation 0x00bff7b0 __CFRunLoopDoObservers + 400
5 CoreFoundation 0x00bf51ea __CFRunLoopRun + 1226
6 CoreFoundation 0x00bf4a5b CFRunLoopRunSpecific + 443
7 CoreFoundation 0x00bf488b CFRunLoopRunInMode + 123
8 GraphicsServices 0x043042c9 GSEventRunModal + 192
9 GraphicsServices 0x04304106 GSEventRun + 104
10 UIKit 0x01b99106 UIApplicationMain + 1526
11 SW LiveSheet 0x0007888a main (main.m:14)
12 libdyld.dylib 0x04e61ac9 start + 1
搜索我的项目没有找到SCNPhysicsBody _setOwner:
的示例,所以我假设这是一个内部的SceneKit方法?
有谁知道这可能导致崩溃的原因是什么?我将包括任何可能相关的方法(如果你告诉我它们可能是什么),但是创建对象的一系列方法很长,所以在这里盲目地复制它并不是很有效。另外,正如我所说,崩溃似乎正在“方法之间”发生。
有人认出这个错误吗?或者是否有任何常见的“开始使用SceneKit”错误,我可能会犯这样的错误,这可能导致这种情况?我知道代码可以工作,因为它适用于其他项目,这只是在翻译中丢失的问题。此外,在点击开始添加新对象的过程之前,场景会成功加载。
有人能指出我正确的方向吗?即使只是想知道在哪里调查也会受到赞赏。
感谢帮助一个SceneKit新手!
答案 0 :(得分:2)
奇怪的是,答案最终只是在设备上运行应用程序。我从来没有弄清楚模拟器中出了什么问题,但是一旦我尝试在设备上运行它,它就可以在不改变任何东西的情况下工作!
令人沮丧,试图寻找解决这种奇怪事情的解决方案,但希望这会帮助那些经历过类似事情的人。
如果您正在使用SceneKit进行操作,并且遇到类似这样的奇怪错误,请尝试在设备上运行它,然后再撕掉太多的头发。