我是以编程方式在视图控制器的loadView方法中创建视图。如下:
- (void)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以避免无效的引用等。
非常感谢。
答案 0 :(得分:0)
问题是该视图持有对控制器的引用。当视图被卸载时,控制器参考超出范围,所以繁荣!