Objective c AVCaptureSession启动内存警告
每次启动AVCaptureSession时,我都会收到一条内存警告,导致超时崩溃。Objective c AVCaptureSession启动内存警告,objective-c,ios,memory-management,avcapturesession,Objective C,Ios,Memory Management,Avcapturesession,每次启动AVCaptureSession时,我都会收到一条内存警告,导致超时崩溃。 我以异步方式启动会话,Instruments工具说应用程序消耗了大约2MB的内存。 你知道如何克服这个问题吗?2MB的分配内存是否太多 谢谢! [iOS 4.3,ARC] @autoreleasepool { //Init capture session session = [[AVCaptureSession alloc] init]; session.sessionPreset = A
我以异步方式启动会话,Instruments工具说应用程序消耗了大约2MB的内存。 你知道如何克服这个问题吗?2MB的分配内存是否太多 谢谢! [iOS 4.3,ARC]
@autoreleasepool {
//Init capture session
session = [[AVCaptureSession alloc] init];
session.sessionPreset = AVCaptureSessionPresetPhoto;
//Resize container view
CGRect cameraContainerFrame = cameraContainerView.frame;
cameraContainerFrame.size = CGSizeMake(320, 426);
cameraContainerView.frame = cameraContainerFrame;
CALayer *viewLayer = [cameraContainerView layer];
[viewLayer setMasksToBounds:YES];
//Create preview layer
captureVideoPreviewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:session];
CGRect bounds = [cameraContainerView bounds];
[captureVideoPreviewLayer setFrame:bounds];
if ([captureVideoPreviewLayer isOrientationSupported]) {
[captureVideoPreviewLayer setOrientation:AVCaptureVideoOrientationPortrait];
}
[captureVideoPreviewLayer setVideoGravity:AVLayerVideoGravityResizeAspectFill];
[viewLayer addSublayer:captureVideoPreviewLayer];
//Get input device
captureDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
if ([captureDevice lockForConfiguration:nil]){
captureDevice.focusMode = AVCaptureFocusModeContinuousAutoFocus;
captureDevice.whiteBalanceMode = AVCaptureWhiteBalanceModeContinuousAutoWhiteBalance;
[captureDevice unlockForConfiguration];
}
NSError *error = nil;
AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:captureDevice error:&error];
if (!input) {
// Handle the error appropriately.
DLog(@"ERROR: trying to open camera: %@", error);
}
//Add input to session
[session addInput:input];
//Output
stillImageOutput = [[AVCaptureStillImageOutput alloc] init];
NSDictionary *outputSettings = [NSDictionary dictionaryWithObject:AVVideoCodecJPEG forKey:AVVideoCodecKey];
[stillImageOutput setOutputSettings:outputSettings];
[session addOutput:stillImageOutput];
//Save state
cameraSessionInitialized = YES;
[session startRunning];
}
如果您不关心质量,这确实可以消除内存警告。我正在试图找出如何使它与AVCaptureSessionPresetPhoto一起工作。我没有感觉到
AVCaptureSessionPresetPhoto
和AVCaptureSessionPresetMedium
之间的质量变化,所以您的回答帮助了我,谢谢
session.sessionPreset = AVCaptureSessionPresetMedium;