1

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

例如,在以下代码中,视图由父视图保留。如果这个视图也保留它的 ViewController 会很方便,这样我就可以继续并在 loadView 方法中释放控制器。

- (void) loadView {

  ...

  MyViewController* ctrl = [[MyViewController alloc] init];
  [self.view addSubview: ctrl.view];
  [ctrl release];

}

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

谢谢

4

2 回答 2

3

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

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

于 2012-04-11T14:15:09.620 回答
0

您有些落后:视图控制器保留其视图,而不是相反。通常,一个视图控制器管理屏幕上的整个视图层次结构。虽然 iOS 5 确实允许您一次使用多个视图控制器,但正确执行此操作需要的不仅仅是将一个控制器的视图添加为另一个控制器视图的子视图。有关该过程的易于理解的解释,请阅读Matt Neuberg 的书Programming iOS 5, 2nd Edition的 View Controllers 章节的预览。如果您将一个视图控制器添加为另一个视图控制器的子级,则父级将保留该子级,您无需为其创建单独的属性。

于 2012-04-11T15:01:23.483 回答