我对IOS编程比较陌生。我已经完成了一个所有编程都没有ARC的课程,我有一个内存管理问题,我希望可以澄清。
我的情况是这样的:我有一个应用程序,其中“父”视图控制器保持它将推送的另一个“子”视图控制器。因此,当推送然后弹出此子视图时,它将不会被释放,因为父视图会保留它。但即便如此,我认为这个子视图在弹出时仍会调用其所有属性的释放。我有(非原子,保留)属性,它必须在这些属性上调用release,因为这些字段最终被释放,并且在弹出子视图时为null,即使子视图控制器本身仍然存在。
我认为只要我抓住前一个视图控制器中的子视图控制器,它就不会释放它的任何属性,即使它被弹出,但我想情况并非如此。我对此是否正确?我找不到一个,但有一个参考页面,说明弹出视图时调用的所有内容吗?
答案 0 :(得分:1)
情况应该不是这样。弹出视图控制器时,它会将子项的保留计数减1。但子控制器不会释放它的元素,直到它的保留达到零时调用dealloc方法。如果您正确地将其保留在父级中,那么它不应该被取消分配。