AVCaptureSession启动内存警告

dav*_*ode 2 memory-management objective-c ios avcapturesession

每次我启动AVCaptureSession时都会收到内存警告,导致一段时间后崩溃.
我正在异步启动会话,而Instruments工具说该应用程序消耗大约2 MB的内存.你知道如何克服这个问题吗?2MB分配的内存太多了吗?

Thankx![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];
}
Run Code Online (Sandbox Code Playgroud)

k20*_*k20 9

session.sessionPreset = AVCaptureSessionPresetMedium;
Run Code Online (Sandbox Code Playgroud)

如果你不关心质量,这确实摆脱了内存警告.我正在试图弄清楚如何使用AVCaptureSessionPresetPhoto.