繁体   English   中英

在ARC下将NSArray设置为nil

[英]Setting NSArray to nil under ARC

我向所有initdealloc添加了一些日志记录,以试图了解为什么随着运行时间的继续,启用了ARC的项目消耗越来越多的内存。 我发现一个视图控制器是负责任的。 初始化的主要职责是创建一个NSMutableArray并用NSNull对象填充它。 在执行期间,它将这些空对象交换为更有意义的对象,反之亦然-基本的延迟加载设置。

弹出该视图控制器时,不会释放当时NSMutableArray中的任何非空视图。 结果,视图控制器本身也不会释放。

我可以通过清空NSMutableArray或将其设置为nil来解决此问题。

是什么使得这有必要? 即使我在ARC下创建数组,将数组设置为nil始终是我的责任吗? 还是必须有其他方法来保留数组中的对象之一,并防止其自动取消分配?

假设NSMutableArray是实例变量,则应在释放视图控制器时将其释放。 如果在NSMutableArray仅包含NSNull对象时调用了控制器的dealloc ,但是在用“有意义的”内容填充数组时并没有释放它,这意味着您无疑具有很强的引用周期 ,即必须有一些引用NSMutableArray的内容中的视图控制器本身。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM