我有一个应用程序在屏幕不断在后台线程捕捉。 下面是代码
- (UIImage *) captureScreen {
UIWindow *keyWindow = [[UIApplication sharedApplication] keyWindow];
CGRect rect = [keyWindow bounds];
UIGraphicsBeginImageContext(rect.size);
CGContextRef context = UIGraphicsGetCurrentContext();
[[keyWindow layer] renderInContext:context];
UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIDeviceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation;
if ((orientation == UIInterfaceOrientationLandscapeLeft) || (orientation == UIInterfaceOrientationLandscapeRight) || (orientation==UIInterfaceOrientationPortraitUpsideDown)) {
img=[self rotatedImage:img];
}
return img;
}
它的工作原理很好的捕捉一次或两次。 但过了一段应用程序崩溃总是在同一行后[[keyWindow layer] renderInContext:context];
和它给EXC_BAD_ACCESS (code=1, address=0x8)
消息。 我搜索无处不在,没有什么用处。 发现只有renderInContext有内存泄漏问题,当它工作在后台线程。 但是当你明白,不解决我的问题:)。 因此,有3个问题: -
这是什么崩溃(问题)的原因是什么?
我能有什么用呢?
是否有任何其他的方式来捕捉屏幕(苹果暗示一个旁边,因为这里还使用renderInContext)。 不事渲染...?