我有一个法国问题,所以我希望我的英语不会太糟糕。
这是我对社区的第一个问题,首先,我要感谢大家所有有用的提示和答案,我已经在这里阅读了几个月,并为我的第一个iOS帮了我很多忙应用
我对iOS开发世界很新,所以我希望我的问题不会太基础。
来了:
我有一个Spitskit游戏运行“相当”很好,目前没有确定的问题,除了在一些非常罕见的情况下应用程序冻结,永远不会“恢复”。这是一种突破性的游戏,所以我有球和砖,我使用Apple物理世界和Spritekit的物理体。假设每500个主线程冻结一次。起初我调查了死锁,因为我使用了一些多线程(GCD)。但这方面似乎没有任何错误。为了简化对社区的调查,我做了以下更改:在我的代码中根本没有GCD。场景的更新方法中没有任何内容。现在一切都在主场景中运行。我很乐意发布一些代码但不确定什么是相关的,因为我没有GCD和更新代码了。
只有主线程看起来很好。
以下是主线程的btrace,希望它可以提供帮助。每次冻结时,迹线总是相同的。
* thread #1: tid = 0x519fe, 0x00000001941224d0 libsystem_m.dylib`__sincosf_stret, queue = 'com.apple.main-thread', stop reason = signal SIGSTOP
* frame #0: 0x00000001941224d0 libsystem_m.dylib`__sincosf_stret
frame #1: 0x000000018f2b864c PhysicsKit`b2SeparationFunction::Evaluate(int, int, float) const + 112
frame #2: 0x000000018f2b79d0 PhysicsKit`b2TimeOfImpact(b2TOIOutput*, b2TOIInput const*) + 928
frame #3: 0x000000018f2bfac0 PhysicsKit`b2World::SolveTOI(b2TimeStep const&) + 1144
frame #4: 0x000000018f2c0318 PhysicsKit`b2World::Step(float, int, int) + 280
frame #5: 0x000000018f2af248 PhysicsKit`-[PKPhysicsWorld stepWithTime:velocityIterations:positionIterations:] + 260
frame #6: 0x000000018a38ce08 SpriteKit`-[SKScene _update:] + 616
frame #7: 0x000000018a39ffc8 SpriteKit`-[SKView(Private) _update:] + 260
frame #8: 0x000000018a39dab0 SpriteKit`-[SKView renderCallback:] + 876
frame #9: 0x000000018a39b794 SpriteKit`__29-[SKView setUpRenderCallback]_block_invoke + 76
frame #10: 0x000000018a3baa90 SpriteKit`-[SKDisplayLink _callbackForNextFrame:] + 288
frame #11: 0x00000001002ffc80 libglInterpose.dylib`-[DYDisplayLinkInterposer forwardDisplayLinkCallback:] + 172
frame #12: 0x000000018a114cbc QuartzCore`CA::Display::DisplayLinkItem::dispatch() + 36
frame #13: 0x000000018a114ac8 QuartzCore`CA::Display::DisplayLink::dispatch_items(unsigned long long, unsigned long long, unsigned long long) + 300
frame #14: 0x000000018840fe74 IOKit`IODispatchCalloutFromCFMessage + 364
frame #15: 0x00000001874c08e0 CoreFoundation`__CFMachPortPerform + 192
frame #16: 0x00000001874cee90 CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 56
frame #17: 0x00000001874cedf0 CoreFoundation`__CFRunLoopDoSource1 + 444
frame #18: 0x00000001874cd014 CoreFoundation`__CFRunLoopRun + 1620
frame #19: 0x000000018740dc20 CoreFoundation`CFRunLoopRunSpecific + 452
frame #20: 0x000000018d0f5c0c GraphicsServices`GSEventRunModal + 168
frame #21: 0x000000018a53efdc UIKit`UIApplicationMain + 1156
frame #22: 0x0000000100117308 MyGameName`main(argc=1, argv=0x000000016fd37bf0) + 116 at main.m:16
frame #23: 0x000000019400baa0 libdyld.dylib`start + 4
非常感谢您的时间,如果您需要更多信息或代码示例,请随时向我询问。
周末愉快,
格拉德隆