今天查看代碼,發(fā)現(xiàn)使用了@autoreleasepool
#pragma mark --
#pragma mark -- processCameraOutput to delegate trans
- (void)processCameraOutputPixelBuffer:(CMSampleBufferRef)sampleBuffer {
__weak typeof(self) weakSelf = self;
@autoreleasepool {
CVPixelBufferRef pixelBuffer = CMSampleBufferGetImageBuffer(sampleBuffer);
if(pixelBuffer && weakSelf.delegate && [weakSelf.delegate respondsToSelector:@selector(didOutputPixelBuffer:)]){
[self.delegate didOutputPixelBuffer:pixelBuffer];
}
}
}
用@autoreleasepool是有用的。
正常情況下,你創(chuàng)建的變量會在超出其作用域的時候被釋放掉。
而如果你的函數(shù)寫的很長,在你函數(shù)運(yùn)行過程中出現(xiàn)很多中間變量,占據(jù)了大量的內(nèi)存,怎么辦?
用@autoreleasepool。
在@autoreleasepool中創(chuàng)建的變量,會在@autoreleasepool結(jié)束的時候執(zhí)行一次release,進(jìn)行釋放。其實(shí)@autoreleasepool就相當(dāng)于一層作用域。