AVAssetWriter вещи утечки - PullRequest
       14

AVAssetWriter вещи утечки

1 голос
/ 27 мая 2011

Привет, я новичок в разработке ios, и я столкнулся с некоторыми проблемами

Я делаю некоторые настройки AVAssetWriter как объекты (я использую его для написания карт пикселей как кадры к видео - и работает нормально)

    self.assetWriter = [[AVAssetWriter alloc] initWithURL:outputPath fileType:AVFileTypeQuickTimeMovie error:&error];

    NSMutableDictionary *dic=[[NSMutableDictionary alloc] init];
    [dic setValue: AVVideoCodecH264 forKey: AVVideoCodecKey];
    [dic setValue:[NSNumber numberWithInt:640] forKey:AVVideoWidthKey];
    [dic setValue:[NSNumber numberWithInt:480] forKey:AVVideoHeightKey];
     self.assetWriterInput = [[AVAssetWriterInput alloc] initWithMediaType:AVMediaTypeVideo outputSettings:dic];
      [dic release];

    assetWriterInputPixelBufferAdaptor =[[AVAssetWriterInputPixelBufferAdaptor alloc] initWithAssetWriterInput:assetWriterInput sourcePixelBufferAttributes:nil];

    self.assetWriterInput.expectsMediaDataInRealTime=YES;
    [self.assetWriter addInput:assetWriterInput];

    [self.assetWriter startWriting];
    [self.assetWriter startSessionAtSourceTime:recordStartTime];

затем, после этого, я сохраняю видео, а затем после него, я выпускаю экземпляры

[self.assetWriterInput markAsFinished];
[self.assetWriter endSessionAtSourceTime:recordStartTime];
[self.assetWriter finishWriting];

CVPixelBufferPoolRelease(assetWriterInputPixelBufferAdaptor.pixelBufferPool);
[self.assetWriter release];
[self.assetWriterInput release];
[self.assetWriterInputPixelBufferAdaptor release];

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

HELP!

1 Ответ

0 голосов
/ 28 мая 2011
AVAssetWriter *newWriter = [AVAssetWriter alloc] // retain count is 1. 
self.assetWriter = newWriter // What this actually does:

- (void)setAssetWriter(AVAssetWriter*)newWriter
{
    if (_assetWriter != newWriter)
    {
        [_assetWriter release]
        _assetWriter = [newWriter retain]; //retain count 2
    }
}

[self.assetWriter release]; //retain count 1

Если вы забыли добавить self.assetWriter = nil;в Deloc, вы будете в конечном итоге утечки.Когда [Alloc] создает экземпляры и назначает их через @properties, добавьте autorelease для выделения строки следующим образом:

self.assetWriter = [[[AVAssetWriter alloc] initWithURL:outputPath fileType:AVFileTypeQuickTimeMovie error:&error] autorelease]; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...