详情页内存持续上升问题排查

起因

项目中详情页中可以切换到前一个详情页或者下一个详情页,有使用类似于轮播图的方案,一共只创建3个详情页,切换后状态复,复用了原来的页面,没有销毁或者新建页面;测试反馈切换多次后页面切换会变卡;同事试了一下的确是这样,让帮忙排查一下 _config.yml 前后切换详情的时候发现内存持续上涨,切换一次涨了10~20M,通过xCode->Debug Memory Graph发现cell没有释放,都是tableView持有了cell

怀疑点:

  • 详情页中有UITableView,但cell的复用方式有点怪,没有用系统的复用方式,而是自己写了个字典来复用cell
  • 项目中用了ReactiveObjC,怀疑是什么地方使用不当导致了内存泄漏

一句话真因

  • 详情页中UITableViewCell通过initWithStyle: reuseIdentifier:的方式创建,详情页前后切换时有重新创建且缓存cell导致内存持续上涨
  • ReactiveObjC使用不当导致了内存泄漏

Written on July 12, 2025