我是 iOS 开发的新手,但我熟悉 Obj-C 中的内存管理基础知识。然而,Apple 关于自定义 UIViewControllers 的文档让我有点困惑。
因此,我有一个 PagingController
,它存储一个 EntryViewController
对象数组。 (它们都是 UIViewController。)这些对象是动态加载的,当然也会在适当的时候释放。 PagingController
中的 View 是在-loadView
中创建的,并存储在self.view
中,正如文档中所说。
每当我加载 EntryViewController
(如 ctrl
)时,我都会调用 [self.view addSubview:ctrl.view];
。我还需要调用 ctrl.parent = self;
,因为目标操作系统是 3.0,我不想修改私有(private)变量 (_parentViewController
)。 (parent
定义为 @property(assign) PagingController *parent;
)
这是我的问题:
- 我必须自己释放
self.view
还是由 UIViewController 负责? - 我是否必须保留
parent
(EntryViewController
中的属性)?我认为这毫无意义,因为所有 subview Controller 都在父 View Controller 卸载时被释放。 - 是否必须在
EntryViewController
的-dealloc
方法中调用[self.view removeFromSuperview]
?文档说,我必须管理所有 subview ,所以我不确定这是否会自动调用。
或者我只是对如何首先创建自定义 View Controller 感到困惑?
最佳答案
- UIViewController 会处理这个
- 你不应该保留父级,将属性设置为分配,否则你将有一个保留周期
- View Controller 会处理它的 View ,你只需要释放你保留的其他 subview (不需要 removeFromSuperview)
关于ios - 自定义 UIViewController 中的内存管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9836016/