【发布时间】:2014-02-19 03:53:43
【问题描述】:
我想从后台服务捕获屏幕截图。在 ios6 和 ios7 下运行正常,但在 ios7 视网膜下崩溃。
这是我的代码
{
IOMobileFramebufferConnection connect;
kern_return_t result;
m_screenSurfaceRef = NULL;
io_service_t framebufferService = IOServiceGetMatchingService(kIOMasterPortDefault, IOServiceMatching("AppleH1CLCD"));
if(!framebufferService)
framebufferService = IOServiceGetMatchingService(kIOMasterPortDefault, IOServiceMatching("AppleM2CLCD"));
if(!framebufferService)
framebufferService = IOServiceGetMatchingService(kIOMasterPortDefault, IOServiceMatching("AppleCLCD"));
#pragma unused(result)
result = IOMobileFramebufferOpen(framebufferService, mach_task_self(), 0, &connect);
result = IOMobileFramebufferGetLayerDefaultSurface(connect, 0, &m_screenSurfaceRef);
}
在retina IOMobileFramebufferGetLayerDefaultSurface(connect, 0, &m_screenSurfaceRef) 上运行时崩溃。
崩溃信息:
线程#1:tid = 0x1dfe9, 0x000000018ea2c270 IOMobileFramebuffer
IOMobileFramebufferGetLayerDefaultSurface + 4, queue = 'com.apple.main-thread, stop reason = EXC_BAD_ACCESS (code=1, address=0x5e06dc28) frame #0: 0x000000018ea2c270 IOMobileFramebufferIOMobileFramebufferGetLayerDefaultSurface + 4
【问题讨论】:
-
似乎在 64 位 + 视网膜上崩溃,而不仅仅是视网膜。你看到的一样吗?
-
@nevyn 谢谢,我构建了 32 位应用,效果很好。
-
这是一个不幸但也许可以接受的解决方法。但是,我在下面提供的答案要好得多。请问你愿意接受吗?
标签: ios7 frameworks screen-capture retina