IOS中未经、viewDidLoad viewDidUnload详解及使用

  

<强>未经、viewDidLoad viewDidUnload,这三个函数到底应该怎么用?

  

搜索一下,全是转载,大概内容是这样:

  
      <李>未经手动加载视图李   <李> viewDidLoad用于笔尖文件加载后,进一步处理李   <李> viewDidUnload是viewDidLoad的镜像李   
  

参考官方文档,我给出纠正:

  

<强>一、未经

  

永远不要主动调用这个函数.view控制器会在视图的属性被请求并且当前视图中值为nil时调用这个函数。如果你手动创建视图,你应该重载这个函数。如果你用IB创建视图并初始化视图控制器,那就意味着你使用initWithNibName:包:方法,这时,你不应该重载未经函数。

  

这个方法的默认实现是这样:先寻找有关可用的nib文件的信息,根据这个信息来加载nib文件,如果没有有关nib文件的信息,默认实现会创建一个空白的UIView对象,然后让这个对象成为控制器的主的观点。

  

所以,重载这个函数时,你也应该这么做。并把子类的观点赋给视图属性(产权)(你创建的视图必须是唯一的实例,并且不被其他任何控制器共享),而且你重载的这个函数不应该调用超级。

  

如果你要进行进一步初始化你的观点,你应该在viewDidLoad函数中去做。在iOS 3.0以及更高版本中,你应该重载viewDidUnload函数来释放任何对视图的引用或者它里面的内容(子视图等等)。

  

这个网上的资料都说的很不全面,尤其是蓝色字部分。

  

<强>二,viewDidLoad

  

这个函数在控制器加载了相关的意见后被调用,而不论这些看法存储在笔尖文件里还是在未经函数中生成。而多数情况下是做nib文件的后续工作。

  

网上资料对这个函数的描述则完全不对。

  

<强>三,viewDidUnload

  

这个函数是viewDidLoad的对立函数。在程序内存欠缺时,这个函数被控制器调用()。由于控制器通常保存着与视图(这里黑体指的视图控制器的视图属性)相关的对象(一般是视图的子视图)或者其他运行时创建的对象的引用,所以你必须使用这个函数来放弃这些对象的所有权以便内存回收。但不要释放那些难以重建的数据(不要在这个函数中释放视图)。

  

通常控制器会保存nib文件建立的观点的引用,但是也可能会保存着未经函数创建的对象的引用。最完美的方法是使用合成器方法:

        自我。 myCertainView=零;      

这样合成器会释放这个视图,如果你没有使用财产,那么你得自己显式释放这个观点。

  

网上对这个函数的描述含含糊糊,看了等于没看。

  

另外:如果控制器存储了其他对象和视图的引用,你还得在dealloc方法中释放这些内存。对于iOS2。x,你还必须在调用超级dealloc方法前将这些引用置为零。

  

<强>四,结论

  

所以流程应该是这样:

  

(未经/nib文件)来加载视图到内存——祝辞viewDidLoad函数进一步初始化这些观点——祝辞内存不足时,调用viewDidUnload函数释放观点

  

——祝辞;当需要使用视图时有回到第一步

  

如此循环

  

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

IOS中未经、viewDidLoad viewDidUnload详解及使用