objetivo c renderInContext travar no encadeamento de segundo plano
Eu tenho um aplicativo em que a tela está continuamente capturando em thread de fundo. Aqui está o código
- (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;
}
Funciona bem para capturar uma ou duas vezes. Mas depois de um tempo o aplicativo trava sempre na mesma linha[[keyWindow layer] renderInContext:context];
e dáEXC_BAD_ACCESS (code=1, address=0x8)
mensagem. Eu procurei em todos os lugares e nada de útil. Encontrei apenas que o renderInContext tem problema de vazamento de memória quando funciona em thread de segundo plano. Mas como você entende isso não resolve o meu problema :). Então tem 3 perguntas: -
Qual é o motivo deste acidente (problema)?
O que posso fazer com isso?
Existe alguma outra maneira de capturar a tela (ao lado do que a Apple sugere, porque lá o renderInContext também é usado). Algo sem render ...?