记一次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];
    });

你可能感兴趣的:(记一次collectionView的内存释放)