iOS简单学之7-autoreleasepool

今天查看代码,发现使用了@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是有用的。
正常情况下,你创建的变量会在超出其作用域的时候被释放掉。
而如果你的函数写的很长,在你函数运行过程中出现很多中间变量,占据了大量的内存,怎么办?
用@autoreleasepool。
在@autoreleasepool中创建的变量,会在@autoreleasepool结束的时候执行一次release,进行释放。其实@autoreleasepool就相当于一层作用域。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.1 什么是自动引用计数 概念:在 LLVM 编译器中设置 ARC(Automaitc Reference Co...
    __silhouette阅读 10,655评论 1 17
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,348评论 30 472
  • 循环引用:http://ios.jobbole.com/82077/类别的作用功能:1.扩充现有类的功能2.对现有...
    得一切从简阅读 3,468评论 0 1
  • 1.OC里用到集合类是什么? 基本类型为:NSArray,NSSet以及NSDictionary 可变类型为:NS...
    轻皱眉头浅忧思阅读 5,208评论 0 3
  • 你说你找到女朋友了 在猴年马月 你说你相信 美好的事情即将发生 你说的每句话 都透露着满心的 欢喜和雀跃 而我 淹...
    小心眼和坏脾气阅读 2,361评论 0 1