0

我对IOS编程比较陌生。我已经完成了一门课程,其中所有的编程都是在没有 ARC 的情况下完成的,我遇到了一个内存管理问题,我希望可以澄清一下。

我的情况是这样的:我有一个应用程序,其中“父”视图控制器持有另一个“子”视图控制器,它将推送。所以当这个子视图被推送然后弹出时,它不会被释放,因为父视图会保留它。但即便如此,我认为这个子视图在弹出时仍然会调用其所有属性的释放。我在其中有(非原子,保留)属性,它必须调用这些属性的释放,因为这些字段最终被释放并且在弹出子视图时为空,即使该子视图控制器本身仍然存在。

我以为只要我在前一个视图控制器中持有子视图控制器,即使它被弹出它也不会释放它的任何属性,但我想事实并非如此。我对此是否正确?我找不到,但是是否有一个参考页面说明了弹出视图时调用的所有内容?

4

1 回答 1

1

不应该是这样的。当您弹出视图控制器时,它会将子项的保留计数减一。但是子控制器不会释放它的元素,直到它的dealloc方法在它的retain达到零时被调用。如果您正确地将其保留在父级中,则不应将其释放。

于 2012-12-13T01:29:44.707 回答