LoadView And ViewDidLoad

来源:互联网 发布:java处理高并发问题 编辑:程序博客网 时间:2024/06/07 04:48

创建视图控制器(ViewController),在视图控制器的.m文件里,我们会看到viewDidLoad方法,这个方法就是当视图加载后调用,在里面我们可以加载一些页面需要的控件、初始化本视图控制器的成员变量或属性。在更早版本还有一个常用的方法loadView方法。

区别:

  • loadView:当view需要被展示而它却是nil时,viewContrller会调用该方法;使用代码生成视图的时候,当视图第一次载入的时候调用的方法。
  • 在控制器中实现了loadView方法,那么可能会在应用运行的某个时候被内存管理控制器调用。如果设备内存不足的时候,视图控制器会收到didReceiveMemoryWarning的消息。默认的实现是检查当前控制器的view是否在使用。如果它的view不在当前正在使用的视图里面,且你的控制器实现了loadView方法,那么这个view将被release,loadView方法将被再次调用来创建一个新的view;
  • 不管有没有nib文件,只要复写了loadView,loadView都会被执行;有nib文件的话,加载的是nib文件的view,没有的话会按照loadView里地代码加载,也就是说程序先会执行loadView方法,然后再去加载nib文件。
  • viewDidLoad:在视图加载后被调用,如果是在代码中创建的视图加载器,它将会在loadView方法后被调用,如果是从nib视图页面输出,它将会在视图设置好后被调用。
在使用viewDidLoad和loadView方法的时候,需注意:
  • viewDidLoad:无论通过什么途径加载完view后肯定会执行这个方法。这个函数在Controller加载了相关的views后被调用,而不论这些views存储在nib文件里还是在loadView函数生产,而多数情况下是做nib文件的后续工作
  • loadView:当通过Xcode实例化一个类的时候就需要自己在Controller中实现这个方法,而在IBZ中实例化就不需要实现它。永远不要主动调用这个函数,viewController会再view的property被请求并且当前view值为nil时调用这个函数。如果你手动创建view,你应该重载这个函数。如果你用IB创建view并初始化viewController,那就意味着你使用initWithNibName:bundle:方法,这时你不应该重载loadView函数。


原创粉丝点击