关于viewDidUnload导致视图reload的问题

来源:互联网 发布:李刚疯狂java讲义视频 编辑:程序博客网 时间:2024/06/10 14:17

         今天遇到一个问题:在ios程序收到内存警告后,程序调用当前不可见视图的viewdidunload时,出现controller马上调用viewdidload的情况,程序给出警告——“viewdidunload的实现导致视图reload,这将会严重影响系统性能”。

错误信息:

MyViewController implementation of -viewDidUnload caused the view to be reloaded. This will adversely impact system performance.

         查找资料后发现,这是由于在viewdidunload中使用了controller的view属性造成的。原因是view释放之后系统调用的viewdidunload,这时再调用view,controller需要重构view。于是出现了前面的一幕。解决办法是去掉对controller的view的调用。


       另外,如果想保持controller的视图在收到内存警告后不被系统自动释放,有如下办法:

1、重载controller的didReceiveMemoryWarning方法,不过需要注意一点,要注释以下语句:

//[super didReceiveMemoryWarning];

2、重载controller的setView:方法:

-(void)setView:(UIView*)view {    if(view != nil || self.okayToUnloadView) {        [super setView:view];    }}


原创粉丝点击