详情页内存持续上升问题排查
起因
项目中详情页中可以切换到前一个详情页或者下一个详情页,有使用类似于轮播图的方案,一共只创建3个详情页,切换后状态复,复用了原来的页面,没有销毁或者新建页面;测试反馈切换多次后页面切换会变卡;同事试了一下的确是这样,让帮忙排查一下
前后切换详情的时候发现内存持续上涨,切换一次涨了10~20M,通过xCode->Debug Memory Graph发现cell没有释放,都是tableView持有了cell
怀疑点:
- 详情页中有UITableView,但cell的复用方式有点怪,没有用系统的复用方式,而是自己写了个字典来复用cell
- 项目中用了ReactiveObjC,怀疑是什么地方使用不当导致了内存泄漏
一句话真因
- 详情页中UITableViewCell通过initWithStyle: reuseIdentifier:的方式创建,详情页前后切换时有重新创建且缓存cell导致内存持续上涨
- ReactiveObjC使用不当导致了内存泄漏
Written on July 12, 2025