ios - 自定义 UIViewController 中的内存管理

标签 ios cocoa-touch

我是 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;)

这是我的问题:

  1. 我必须自己释放 self.view 还是由 UIViewController 负责?
  2. 我是否必须保留 parent(EntryViewController 中的属性)?我认为这毫无意义,因为所有 subview Controller 都在父 View Controller 卸载时被释放。
  3. 是否必须在 EntryViewController-dealloc 方法中调用 [self.view removeFromSuperview]?文档说,我必须管理所有 subview ,所以我不确定这是否会自动调用。

或者我只是对如何首先创建自定义 View Controller 感到困惑?

最佳答案

  1. UIViewController 会处理这个
  2. 你不应该保留父级,将属性设置为分配,否则你将有一个保留周期
  3. View Controller 会处理它的 View ,你只需要释放你保留的其他 subview (不需要 removeFromSuperview)

关于ios - 自定义 UIViewController 中的内存管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9836016/

相关文章:

iphone - 如何制作漂亮的iOS界面?

ios - 在 Swift 中使用自定义消息抛出错误/异常的最简单方法?

iOS 应用程序无法在设备上编译,但在模拟器中运行良好

ios - 如何将 "http://"添加到字符串(如果缺少)

ios - 如何更改 iOS 7 上 UINavigationBar 中文本的颜色?

iphone - 当 UIImageView 离开 UIViewController 的框架时屏蔽它

iphone - 核心数据和核心位置

ios - 在 Swift 中调用可选委托(delegate)函数的最佳方法是什么

ios - 如何使用 mailcore 框架或任何框架在 swift/objective c 中从电子邮件代理获取收件箱?

ios - 为什么 UITableViewCell 有自动布局约束冲突