g_p*_*ass 5 keyboard opengl-es ios skview ios-app-extension
在尝试在iOS 8键盘扩展中使用SpriteKit时,我遇到了许多崩溃,这些崩溃只发生在使用物理设备而未连接到调试器时.
如果调试器连接到设备,或者如果在SIM卡中运行,一切都很可爱.
当没有连接调试器时,我相信扩展的生命周期略有不同,有时候键盘扩展会背景化,导致OpenGL崩溃.
苹果技术说明中描述了我们遇到的崩溃.它位于函数gpus_ReturnNotPermittedKillClient中,并且Apple声明它出现是因为您无法在后台运行OpenGL,并建议使用App Delegate回调来暂停您的OpenGL活动.
由于这是键盘扩展,因此没有应用程序委托.相反,我们尝试注册app委托生命周期通知:没有运气 - 他们不会开火.所以我们尝试使用viewcontroller生命周期回调,它仍然无法解决问题.
当这次崩溃发生时,我们是活跃的键盘,并且只是围绕SpriteKit/SKView和UIImage操作做了很多事情,没有明显的理由我们为什么会背景,但是这种崩溃发生了.如果我们真正做到背景,似乎也会发生同样的崩溃.
最后,我试图弄清楚如何知道我们正在进行背景化,并且我们需要暂停OpenGL.
这是完整的堆栈:
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Subtype: KERN_INVALID_ADDRESS at 0x0000000000000001
Triggered by Thread: 0
Thread 0 name: Dispatch queue: com.apple.spritekit.renderQueue
Thread 0 Crashed:
0 libGPUSupportMercury.dylib 0x000000018e89a18c gpus_ReturnNotPermittedKillClient + 12
1 libGPUSupportMercury.dylib 0x000000018e89b124 gpusSubmitDataBuffers + 160
2 GLEngine 0x0000000189a10260 gliPresentViewES_Exec + 192
3 GLEngine 0x0000000189a10164 gliPresentViewES + 80
4 OpenGLES 0x0000000189a1fc7c -[EAGLContext presentRenderbuffer:] + 68
5 SpriteKit 0x000000018a51c4a4 -[SKView _renderContent] + 1028
6 libdispatch.dylib 0x0000000196c8d368 _dispatch_client_callout + 12
7 libdispatch.dylib 0x0000000196c966e4 _dispatch_barrier_sync_f_invoke + 72
8 SpriteKit 0x000000018a51c060 -[SKView renderContent] + 88
9 SpriteKit 0x000000018a519034 __29-[SKView setUpRenderCallback]_block_invoke + 60
10 SpriteKit 0x000000018a545fd4 -[SKDisplayLink _callbackForNextFrame:] + 268
11 QuartzCore 0x000000018a04d27c CA::Display::DisplayLinkItem::dispatch() + 28
12 QuartzCore 0x000000018a04d114 CA::Display::DisplayLink::dispatch_items(unsigned long long, unsigned long long, unsigned long long) + 320
13 IOKit 0x00000001870458cc IODispatchCalloutFromCFMessage + 372
14 CoreFoundation 0x0000000185e995e0 __CFMachPortPerform + 176
15 CoreFoundation 0x0000000185eae1fc __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 52
16 CoreFoundation 0x0000000185eae15c __CFRunLoopDoSource1 + 432
17 CoreFoundation 0x0000000185eac0dc __CFRunLoopRun + 1636
18 CoreFoundation 0x0000000185dd90a0 CFRunLoopRunSpecific + 392
19 GraphicsServices 0x000000018ef7b5a0 GSEventRunModal + 164
20 UIKit 0x000000018a70e3bc UIApplicationMain + 1484
21 libxpc.dylib 0x0000000196e9c268 _xpc_objc_main + 764
22 libxpc.dylib 0x0000000196e9df50 xpc_main + 196
23 Foundation 0x0000000186eafc7c -[NSXPCListener resume] + 180
24 PlugInKit 0x0000000190e8a90c -[PKService run] + 596
25 PlugInKit 0x0000000190e8a544 +[PKService main] + 60
26 PlugInKit 0x0000000190e8a934 +[PKService _defaultRun:arguments:] + 20
27 libextension.dylib 0x0000000195eacd88 NSExtensionMain + 64
28 libdyld.dylib 0x0000000196cb6a04 start + 0
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1082 次 |
| 最近记录: |