UIView 是否保留其视图控制器



UIView 是否保留其关联的视图控制器?

例如,在下面的代码中,视图由父视图保留。如果此视图还保留其视图控制器,以便我可以继续在 loadView 方法中释放控制器,那将很方便。

- (void) loadView {
  ...
  MyViewController* ctrl = [[MyViewController alloc] init];
  [self.view addSubview: ctrl.view];
  [ctrl release];
}

我想,另一种方法是将控制器作为实例变量进行跟踪,并在适当的时候释放它。

谢谢

不,

它没有。正如你已经提到的,你需要一个成员变量。

(视图甚至不知道自己的视图控制器)

你的东西有点倒退:视图控制器保留它的视图,而不是相反。通常,一个视图控制器一起管理屏幕上的整个视图层次结构。虽然 iOS 5 确实允许您一次使用多个视图控制器,但正确执行此操作需要的不仅仅是将一个控制器的视图添加为另一个控制器视图的子视图。有关该过程的易于理解的说明,请阅读 Matt Neuberg 的书《Programming iOS 5, 2nd Edition》中视图控制器章节的预览。如果将一个视图控制器添加为另一个视图控制器的子级,则父级将保留该子级,您无需为其创建单独的属性。但是在尝试之前请阅读文档,以避免很多挠头。

最新更新