स्विफ्ट में "CFRetain (sampleBuffer)" और "CFRelease (sampleBuffer)" का उपयोग कैसे करें? CFRetain is unavailable: Core Foundation objectes are automatically memory managed.
स्विफ्ट में "CFRetain (sampleBuffer)" का उपयोग कैसे करें?
- (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);
});
}
आप इस विधि के दायरे से बाहर CMSampleBuffer वस्तु को संदर्भित करने की जरूरत है, तो आप इसे CFRetain और फिर इसे CFRelease जब आप इसे के साथ समाप्त कर करना होगा। (Apple Document)
क्या आप _need_ को "इस विधि के दायरे से बाहर CMSampleBuffer ऑब्जेक्ट का संदर्भ देते हैं"? –
हां, मैं '_writingQueue' में 'संलग्न नमूना बफर' करना चाहता हूं। – Limon
'appendSampleBuffer:' बफर के साथ क्या करता है? क्या यह अपनी सामग्री को किसी अन्य स्मृति में कॉपी करता है, या इसका उपयोग करता है? पहले मामले में, मुझे लगता है कि आपकी रखरखाव/रिलीज जोड़ी आवश्यक नहीं होनी चाहिए। –