viewDidUnload不调用alloc / init初始化的viewcontroller没有xib文件
为什么不调用viewDidUnload
方法,当我不使用xib和使用alloc / init来初始化我的ViewController
时,我通过模拟器模拟任何iOS版本的内存警告? 似乎这个方法从来没有被调用。
如果我通过使用xib文件的alloc / initWithNibName创build控制器,则成功调用viewDidUnload方法。 为什么会发生? xib文件是否需要所有视图控制器正常处理内存警告?
viewDidUnload
被调用,每当收到内存警告,并调用每个视图控制器有一个不可见的视图,如UINavigationController
如果你推新视图控制器,这个视图控制器导致内存不足的视图控制器viewDidUnload
将被调用(因为它的看法是不可见的)
另外请注意,如果你实现了didReceiveMemoryWarning
并且不要调用[super didReceiveMemoryWarning];
,你的viewDidUnload
不会被调用
例如,如果你在你的视图控制器这个
- (void)didReceiveMemoryWarning { //with [super didReceiveMemoryWarning]; // viewDidUnload gets called //without [super didReceiveMemoryWarning]; viewDidUnload does not get called }
我解决了我的问题。 没有xib的我的实现只需要添加下面的代码:
- (void) loadView { UIView * myView = [[[UIView alloc] init] autorelease]; self.view = myView; }
受testing程序条款限制,我认为我们无法详细讨论iOS 6 Beta,但是我也可能build议您在8页的iOS 6 Beta 1版本中查看第6页的底部有关viewWillUnload和viewDidUnLoad的说明。