цель c renderInContext сбой в фоновом потоке
У меня есть приложение, в котором экран непрерывно захватывает в фоновом потоке. Вот код
- (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 вопроса: -
В чем причина этого сбоя (проблемы)?
Что я могу сделать с этим?
Есть ли другой способ захвата экрана (кроме того, который предлагает Apple, потому что там также используется renderInContext). Что-то без рендеринга ...?