UICollectionView dataSource is not set 崩溃分析

最近很多bug崩溃统计有很多
UICollectionView dataSource is not set


image.png

网上也有很多类似的解答。最终结合自己的代码和架构,分析出了问题所在:

我们的在利用UICollectionView布局时都是在 UIViewController 创建一个UICollectionView成员对象,利用其代理方法进行布局控制和赋值操作。

但是我们在很多实际的Controller中,由于业务代码的不规范,造成很多控制存在内存泄漏的问题,造成Controller 在dismiss 或 pop 操作后不能销毁。

而我们的代码中很一个登陆和退出登陆的通知,在触发该通知后,会重新刷新布局和数据,需要对UICollectionView 进行 reloadData 操作。

这样就造成了UICollectionView dataSource is not set 崩溃。

OC 的UI布局在释放控制器 是 从父类释放,一层一层最终释放到添加的子类对象中,只要子类对象有内存泄漏问题,最终父类也不会释放。

你可能感兴趣的:(UICollectionView dataSource is not set 崩溃分析)