Jak używać "CFRetain (sampleBuffer)" i "CFRelease (sampleBuffer)" w Swift? CFRetain is unavailable: Core Foundation objectes are automatically memory managed.
Jak używać "CFRetain (sampleBuffer)" w Swift?
- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection
{
[self appendVideoSampleBuffer:sampleBuffer];
}
- (void)appendVideoSampleBuffer:(CMSampleBufferRef)sampleBuffer
{
dispatch_async(_writingQueue, ^{
CFRetain(sampleBuffer);
[_videoInput appendSampleBuffer:sampleBuffer];
CFRelease(sampleBuffer);
});
}
Jeśli trzeba odwoływać się do obiektu CMSampleBuffer poza zakresem tej metody, musisz go CFRetain a następnie CFRelease go po zakończeniu z nim. (Apple Document)
Czy "chcesz" odwołać się do obiektu CMSampleBuffer poza zakresem tej metody? –
Tak, chcę "appendSampleBuffer" w "_writingQueue". – Limon
Co robi "appendSampleBuffer:" z buforem? Czy kopiuje swoją zawartość do innej pamięci, którą posiada, czy używa jej tak jak jest? W pierwszym przypadku twoja para retain/release nie powinna być potrzebna. –