在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];
});