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

一个UIView保留它的关联视图控制器?

例如,在以下代码中,视图由父视图保留。 如果这个视图也保留了它的ViewController,那么我可以继续在loadView方法中释放控制器。

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

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

谢谢

不,它不是。 你需要一个成员variables,正如你已经提到的。

(一个视图甚至不知道它自己的viewController)

你已经有点落后了:视图控制器保留了它的视图,而不是相反。 通常,一个视图控制器一起pipe理屏幕上的整个视图的层次结构。 虽然iOS 5确实允许您一次使用多个视图控制器,但正确执行此操作不仅仅需要将一个控制器视图添加为另一个控制器视图的子视图。 为了便于理解这个过程,请阅读Matt Neuberg的书“ Programming iOS 5,2nd Edition” 的“视图控制器”一章的预览 。 如果添加一个视图控制器作为另一个视图控制器的子视图,则父视图将保留该子视图,而不需要为其创build单独的属性。 但在尝试之前,请先阅读文档,以避免很多头部划伤。