2012-04-07 43 views
2


我開始異步會話和儀器工具說,應用程序佔用大約2 MB的內存。 你有什麼想法如何解決這個問題? 2MB的分配內存太多了嗎?AVCaptureSession開始每次啓動一個AVCaptureSession我收到了內存不足的警告導致死機時間後內存警告

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]; 
} 

回答

9
session.sessionPreset = AVCaptureSessionPresetMedium; 

如果你不關心質量,這也擺脫內存的警告。我試圖找出如何讓它與AVCaptureSessionPresetPhoto一起工作。

+0

我不覺得在AVCaptureSessionPresetPhoto'和'AVCaptureSessionPresetMedium'之間'質量這一變化使你的答案幫助我,謝謝 – 2014-03-02 20:01:08