UIView是否保留了相关的视图控制器?
例如,在以下代码中,父视图保留视图。如果此视图还保留其ViewController以便我可以继续并在loadView方法中释放控制器,那将会很方便。
- (void) loadView {
...
MyViewController* ctrl = [[MyViewController alloc] init];
[self.view addSubview: ctrl.view];
[ctrl release];
}
我认为,替代方案是将控制器作为实例变量跟踪并在适当时释放它。
由于
答案 0 :(得分:3)
不,它没有。如您所述,您需要一个成员变量。
(视图甚至不知道自己的viewController)
答案 1 :(得分:0)
你有点落后的东西:视图控制器保留其视图,而不是相反。通常,一个视图控制器一起管理屏幕上的整个视图层次结构。虽然iOS 5允许您一次使用多个视图控制器,但正确执行此操作不仅需要将一个控制器的视图添加为另一个控制器视图的子视图。有关该过程的易于理解的解释,请阅读Matt Neuberg的书preview of the View Controllers chapter Programming iOS 5, 2nd Edition。如果将一个视图控制器添加为另一个视图控制器的子视图,则父视图将保留该子视图,您不需要为其创建单独的属性。但是在尝试之前请先阅读文档,以免造成很多麻烦。