Я создаю видео в ARKit во время сеанса. Когда я нажимаю кнопку записи, камера зависает. Я написал код в делегате didUpdateFrame, который вызывает проблему. Там я сохраняю scene.snapshot в виде массива. Также, когда я создаю видео из этих изображений, приложение вылетает со следующим сообщением в отладчике: Сообщение от отладчика: завершено из-за проблемы с памятью
-(void)session:(ARSession *)session didUpdateFrame:(ARFrame *)frame
{
if (_recordButton.state == UIControlStateSelected)
{
currentState = Recording;
[self saveImage];
}
else if (previousState == Recording)
{
NSLog(@"Stop recording");
currentState = NotRecording;
recordTime = NULL;
self.nextButton.enabled=YES;
}
//update recording state per frame update
previousState = currentState;
}
-(void)saveImage
{
UIImage *image = self.sceneView.snapshot;
[self.bufferArray addObject:image];
image = nil;
}
didUpdateFrame
и проверьте трассировку стека — есть большая вероятность, что вы находитесь внутри цикла рендеринга представления, поэтому, если вы запускаете снимок, вы можете запускать другой рендеринг, который снова вызовет вашdidUpdateFrame
, и так далее. до тех пор, пока не произойдет сбой из-за бесконечной рекурсии. Самое простое решение, вероятно, состоит в том, чтобы асинхронно отправить снимок в основную очередь. - person rickster   schedule 24.07.2017