2015-06-02 3 views
0

Этот код падает около 1 секунды после того, как он excuted (iOS7):GPUImage простой код аварии на исполнение

-(void)initializeCamera 
{ 
    GPUImageStillCamera *stillCamera=[[GPUImageStillCamera alloc]initWithSessionPreset:AVCaptureSessionPreset640x480 cameraPosition:AVCaptureDevicePositionBack]; 
    stillCamera.outputImageOrientation=UIInterfaceOrientationPortrait; 
    GPUImageView *image=[[GPUImageView alloc]initWithFrame:CGRectMake(0.0, 0.0, self.view.frame.size.width, self.view.frame.size.height)]; 
    GPUImageGrayscaleFilter *filter=[[GPUImageGrayscaleFilter alloc]init]; 

    [self.view addSubview:image]; 
    [stillCamera addTarget:filter]; 
    [filter addTarget:image]; 
    [stillCamera startCameraCapture]; 
} 

Если это любая помощь как раз перед врезаться картину того, что отображается камера захвачена.

GPUImage устанавливается с CocoaPod:

platform :ios, '7.0' 
pod 'GPUImage' 
+2

Обновите свой вопрос и узнайте подробности об аварии. И укажите точную строку, вызывающую крушение. – rmaddy

+0

A * lot * может произойти в «около 1 секунды» на компьютере. Кроме того, код не сбрасывается * после того, как * он выполняется. Это может привести к сбою в каком-либо другом коде, но сам код не может быть поврежден задним числом. – Caleb

+0

Да, жаль, что я забыл, что могу подключить устройство к xcode, чтобы получить их. – kursus

ответ

1

Это потому, что вы не сохранить свой GPUImageStillCamera. Вы создаете его как локальный экземпляр в методе -initializeCamera и не держитесь за него, поэтому он будет освобожден в момент завершения -initializeCamera, что приведет к сбою или другому неопределенному поведению.

Вам нужно удержать это как переменную свойства или экземпляра класса, в которой находится -initializeCamera, или какая-либо другая внешняя ссылка.

Смежные вопросы