记一次collectionView的内存释放

在collectionView的方法中:

 __weak typeof(self)weakSelf = self;
    cell.deletHeaderBlock = ^{
        __strong typeof(weakSelf)strongSelf = weakSelf;
        UIView*view = [collectionView cellForItemAtIndexPath:selectIndex]
    };

在cell的block里面直接使用collectionView会造成循环引用,Xcode的内存检测工具也不能检测到,控制器的dealloc方法也能够正常执行,但是内存不会释放掉,使用strongSelf.collectionView代替直接使用collectionView便可解决问题.

另外由于block的变量捕获机制,当在block中使用局部对象时,如果这个对象占用内存很大,会导致内存占用过高,可以在block外面先创建一个变量记录要使用的值,在block内部使用这个变量,可以减少内存占用。

    UIImageOrientation orientation = currentUseVirtaulHeaderModel.imgOrientation;
    dispatch_source_set_event_handler(self.timer, ^{
        [self playVirtualHeaderWithPixelBufferArray:pixelBufferArray imgOrentation:orientation];
    });
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 未完,待更新 一、必备题 1、AFN 原理 链接:AFNetworking源码——基本架构 - 简书 2、SDWe...
    小熊_07cb阅读 2,866评论 3 27
  • 欢迎访问我的博客原文 内存泄漏指的是程序中已动态分配的堆内存(程序员自己管理的空间)由于某些原因未能释放或无法释放...
    FiTeen阅读 2,732评论 1 5
  • 一、Block循环引用 关于这一点,我相信很多人都已经了解,就不再详细解释,举个例子: 关于其中的循环问题,我们看...
    Cheriez阅读 390评论 0 0
  • 内存泄漏 内存泄漏指的是程序中已动态分配的堆内存由于某些原因未能释放或无法释放,造成系统内存的浪费,导致程序运行速...
    ___F阅读 2,553评论 1 4
  • 目录 ARC下如何避免内存泄露?如何检测? 你是如何做内存优化的? __block你知道多少?在什么时候使用? 关...
    HelloiWorld阅读 1,003评论 2 10