我向我的所有init
s 和dealloc
s 添加了一些日志记录,以试图了解为什么我的启用 ARC 的项目随着运行时的继续消耗越来越多的内存。我发现一个视图控制器负责。初始化时的主要职责是创建一个并用对象NSMutableArray
填充它。NSNull
在执行期间,它将这些空对象换成更有意义的对象,反之亦然 - 一个基本的延迟加载设置。
当这个视图控制器被弹出时,当时的任何非空视图NSMutableArray
都不会被释放。结果,视图控制器本身也没有被释放。
我可以通过清空NSMutableArray
或将其设置为零来解决此问题。
是什么让这变得有必要?如果我创建了一个数组,即使在 ARC 下,将它设置为 nil 是否总是我的责任?还是必须有其他东西保留数组中的一个对象,并阻止它自动释放?