今天遇到了一个奇妙的问题,就是tableView在界面返回时出现内存泄漏,本来以为是自己的代码循环引用导致的,各种测试,各种找,但是只能找到tableView之所以泄露是因为被UIView动画代理持有了(UIViewAnimationState->UIViewAnimationState->UIViewAnimationBlockDelegate->__NSMallocBlock__->tableView),无法释放,后来又无意间发现tableView如果进入界面后,然后滑到底,再返回就不会出现内存泄漏;如果cell较多,并且进入界面后直接退出界面,才会发生的内存泄漏。
找到在哪里内存泄漏,剩下的就好办了,又是一堆测试,发现当reloadData刚执行,还没彻底刷新完就开始调用beginUpdates,endUpdates,虽然进入界面时会有一些自动的动画,但是此时返回就会出现上面所提到的内存泄漏的情况!