• loadView viewDidLoad介绍


    最大区别:

    loadView在视图初始化的时候调用,应用开启后只调用一次

    viewDidLoad在每次进入一个视图的时候都会调用

     

    一、loadView

    永远不要主动调用这个函数view controller会在view的property被请求并且当前view值为nil时调用这个函数

    如果你手动创建view,你应该重载这个函数,且不要在重载的时候调用[super loadview]

    如果你用IB创建view并初始化view controller,那就意味着你使用initWithNibName:bundle:方法,这时,你不应该重载loadView函数。

    这个方法系统的默认实现是这样:

    1、寻找有关可用的nib文件的信息,根据这个信息来加载nib文件       //所以,nib的加载过程是在loadview中完成的哦。

    2、如果没有有关nib文件的信息,默认创建一个空白的UIView对象,然后把对象成赋值给viewcontroller的主view。

    所以,如果你决定重载这个函数时,你也应该完成这些步骤:

    把子类的view赋给view属性(property)(你create的view必须是唯一的实例,并且不被其他任何controller共享),而且你重载的这个函数不应该调用super,这个也是为了保持主view与controller的单一映射关系。

    二、viewDidLoad

    这个函数在controller加载了相关的views后被调用,即在loadView后被调用,而不论这些views存储在nib文件里还是在loadView函数中生成。

    这个函数的作用主要是让你可以进一步的初始化你的views。viewDidLoad通常负责的是view及其子view被加载进内存之后的数据初始化的工作,即视图的数据部分的初始化。其多数情况下是做nib文件的后续工作。

    在iOS 3.0以及更高版本中,你应该重载viewDidUnload函数来释放任何对view的引用或者它里面的内容(子view等等)。

    在ios 6.0中,已经去掉了自动生成viewDidUnload函数。

    三、viewDidUnload

    在iOS6里把viewWillUnload和viewDidUnload标注为了Deprecated

    在程序内存欠缺时,这个函数被controller调用,来释放它的view以及view相关的对象。由于controller通常保存着view以及相关object的引用,所以你必须使用这个函数来放弃这些对象的所有权以便内存回收。但不要释放那些难以重建的数据。

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

    1 self.myCertainView
    2  = nil;

    这样合成器会release这个view,如果你没有使用property,那么你得自己显式释放这个view。

    官方ViewController programming guide 上说,在iOS6以后要这样干:

    - (void)didReceiveMemoryWarning
    {
    [super didReceiveMemoryWarning];
    // Add code to clean up any of your own resources that are no longer necessary.
    if ([self.view window] == nil)
    {
    // Add code to preserve data stored in the views that might be
    // needed later.
    
    // Add code to clean up other strong references to the view in
    // the view hierarchy.
    self.view = nil;
    }
    }

    四、结论

    所以流程应该是这样:

    loadView来加载view(无论nib文件或自定义的views)到内存 ——>viewDidLoad函数进一步初始化这些view (通常是侧重于数据data的初始化)——>

    内存不足时,调用viewDidUnload函数释放views—->当需要使用view时又回到第一步  

    如此循环

  • 相关阅读:
    hdoj-1004-Let the Balloon Rise(水题)
    hdoj-1827-Summer Holiday(scc+缩点)
    poj--3624--Charm Bracelet(动态规划 水题)
    HDU
    HDU
    HDU
    HDU
    【POJ1654】Area【叉积】
    【POJ1654】Area【叉积】
    【SSLOJ1715】计算面积【叉积】
  • 原文地址:https://www.cnblogs.com/wyqfighting/p/3158374.html
Copyright © 2020-2023  润新知