0

我正在以编程方式在我的视图控制器的 loadView 方法中创建一个视图。如下:

-(无效)加载视图 {

HPSFormView* viewForThisController = [ [ HPSFormView alloc ] initWithFrame:CGRectZero ] ;
viewForThisController.controller = self; // Set a reference back to this controller so the View knows who to delegate stuff to when > adding controls
self.view = viewForThisController; // Set the view for this controller to be the main menu view 

}

我为三对不同的视图控制器和视图遵循了这种技术。我将视图控制器推送到 UINavigationController 堆栈上。每个视图都包含一个使用 push 的按钮。如下:

-(void)buttonTapped:(id)sender  {
    HPSFormController* formVC = [ [ HPSFormController alloc ] initWithNibName:nil bundle:nil ];
    [(UINavigationController*) self.view.window.rootViewController pushViewController:formVC animated:YES]; 
}

我在 viewDidLoad 中没有任何代码——事实上,我的视图控制器中完全没有它。

一切正常,但是当我在 iOS 模拟器中执行模拟内存警告时,应用程序崩溃了。我认为问题在于我将视图定义为 loadView 中的“本地”变量的方式。

谁能告诉我我的 loadView 看起来是否正常,或者是否有必要以不同的方式定义 loadView 以避免无效引用等。

非常感谢。

4

1 回答 1

0

问题是视图持有对控制器的引用。当视图被卸载时,控制器引用超出范围,太棒了!

于 2012-05-31T09:02:58.927 回答