*** Assertion failure in -[UICol

2016-07-22  本文已影响1162人  641305d5cd60

这个错误有多种可能,包括在google查询的使用cell未注册或者其他的可能,但是我们项目里面的一种可能应该算是一种比较典型的情况。

在开发暴走大事件App的时候报这个错误非常奇怪,调试几个小时也没有发现原因,最后测试发现一个现象就是进去PlayerViewController会触发同一个接口的多次请求,原来是PlayerViewController里面的遗留代码有问题,包括循环引用,代理设置成Strong,导致了PlayerViewController的Dealloc没有调用,也就是循环引用导致PlayerViewController没有释放,所以每次进去到PlayerViewController会再注册一次通知,从而后面进去PlayerViewController里面的时候注册了多次通知,每次通知回调都是调用获取视频选集信息的接口,每次接口返回都会刷新显示视频选集的CollectionView,通知多次刷新CollectionView而且数据源都不一样就导致了这个错误。一种临时解决方法可以试试注册通知前先Remove通知,或者不用通知解决问题,从根本上解决问题当然还是要通过去除循环应用的问题,包括检查Block里面是否用了weak,delegate的属性设置是否正确,Dealloc是否注销了通知,以及其他循环应用的问题。 

上一篇下一篇

猜你喜欢

热点阅读