网上总结 loadView 和 viewDidLoad

iPhone开发必不可少的要用到这两个方法
他们均可以用来在视图载入的时候,初始化一些内容
可是他们有什么区别呢?
viewDidLoad
此方法只有当view从nib文件初始化的时候才被调用
viewDidLoad用于初始化,加载时用到的。

loadView
此方法在控制器的view为nil的时候被调用。
此方法用于以编程的方式建立view的时候用到。
loadView是使用代码生成视图的时候,当视图第一次载入的时候调用的方法。用于使用(写)代码来实现控件。用于使用代码生成控件的函数。如:
- (
void ) loadView {
    UIView *view
=
[ [ UIView alloc] initWithFrame:[ UIScreen

mainScreen] .applicationFrame] ;

[ view
setBackgroundColor:_color
] ;

    self.view = view;
[ view release] ;
}


你在控制器中实现了loadView方法,那么你可能会在应用运行的某个时候被内存管理控制调用。 若是设备内存不足的时候, view
控制器会收到didReceiveMemoryWarning的消息。

默认的实现是检查当前控制器的view是否在使用。若是它的view不在当前正在使用的view
hierarchy里面,且你的控制器实现了loadView方法,那么这个view将被release,
loadView方法将被再次调用来建立一个新的view。
----------------------------------------------------------------------------------------------------------------------
编程

viewDidLoad ,不管是从xib中加载视图,仍是从loadview生成视图,都会被调用。

--------------------------------------------------------------------------------------------------------------------------------------------- 数组

UIViewController 的内存管理
在 iOS3.0 后,UIViewController 多了一个叫作
viewDidUnLoad 的方法。
   先看下 UIViewController 从建立 view
到展现的流程的几个函数

    -init
    -initWithNibName:bundle:

这两个方法都是初始化一个
vc,但请注意 view
不是这时候载入的

    -loadView
    -viewDidLoad

    当一个视图准备展示时,vc 首先会判断
view 是否已经建立不然便经过以前指定的 xib 文件来初始化 view,以及绑定其余关系(若没有指定 xib 文件,则默认会搜索和 vc 同名的
xib,好比 myNameViewController 就会搜索 myNameViewController.xib 文件)

    如果没有
xib 文件,你就能够在 loadview 中本身手动建立这个 viewControoler 须要的视图。接下来就是调用到
-viewDidLoad,许多人喜欢在这里作些其余事情,好比作个 http 请求、创建个数组啥的。这里若不处理正确,-viewDidUnload
激活时内存就容易泄露了,稍后提到。

    -view()appear
    -view()disappear

    这几个方法就不解释了

    -viewDidUnload

    该方法在收到内存警告,同时该视图并不在当前界面显示时候会被调用,此时该
controller 的 view 已经被释放并赋值为 nil。
接下来你要作的是

把实例变量的子视图释放(IBOulet
的,以及本身添加的)
其余实例变量,好比以前在 -viewDidLoaded 中实例的数据数组、http 请求释放掉
    由于当该
viewController 再次被激活准备显示时(好比 navigationControler 返回到上一级),vc 发现本身的 view
为空后会重复以前的流程直到把 view
给建立起来。若没将本身额外添加的子视图,各类类实例变量释放,这里便会从新再次建立。

    因而,内存泄露了。
缓存

-------------------------------------------------------------------------------------------------------------------------------------------注意iphone开发中的这两个函数viewWillAppear和viewDidAppear
每当视图准备在屏幕上显示,或者视图已在屏幕上彻底显示时,将调用这两个方法。

viewWillAppear:方法更新准备显示的视图的信息。调用时,视图可能尚未被加载。
使用viewDidAppear:来触发视图彻底显示在屏幕上以后的行为,例如任何动画。
viewdidload是当程序第一次加载view时调用,之后都不会用到,而viewDidAppear是每当切换到view时就调用。

loadView和viewDidLoad方法。假设不使用xib文件对视图布局,那么loadView方法必须设置屏幕,并对任何子视图布局。每当继承一个具体的子类,例如UITableViewController或UITabBarController时,务必调用[super
loadView]或者实现viewDidLoad。这样一来,在进行定制以前,父类能够对屏幕进行适当的设置。当代码基于具体的子类时,苹果的文档和示例代码鼓励使用viewDidLoad。

viewDidLoad
此方法只有当view从nib文件初始化的时候才被调用
viewDidLoad用于初始化,加载时用到的。
loadView
此方法在控制器的view为nil的时候被调用。 此方法用于以编程的方式建立view的时候用到。
loadView是使用代码生成视图的时候,当视图第一次载入的时候调用的方法。用于使用(写)代码来实现控件。用于使用代码生成控件的函数。

viewDidLoad
,不管是从xib中加载视图,仍是从loadview生成视图,都会被调用。
app

------------------------------------------------------------------------------------------------------------------------ iphone

loadView 和 viewDidLoad 是 iPhone 开发中确定要用到的两个方法。 他们均可以用来在视图载入的时候初始化一些内容。
可是他们有什么区别呢?
    viewDidLoad 方法只有当
view 从 nib 文件初始化的时候才被调用。viewDidLoad 用于初始化,加载时用到。

    loadView 方法在控制器的 view 为 nil
的时候被调用。
此方法用于以编程的方式建立 view 的时候用到。loadView
是使用代码生成视图的时候,当视图第一次载入的时候调用的方法。用于使用(写)代码来实现控件。用于使用代码生成控件的函数。如:
- ( void ) loadView {
   
UIView *view = [ [ UIView alloc] initWithFrame:[ UIScreen
mainScreen]
.applicationFrame] ;
[ view setBackgroundColor:_color] ;
    self.view =
view;
[ view release] ;
}

    你在控制器中实现了 loadView
方法,那么你可能会在应用运行的某个时候被内存管理控制调用。 若是设备内存不足的时候, view 控制器会收到 didReceiveMemoryWarning
的消息。 默认的实现是检查当前控制器的 view 是否在使用。 若是它的 view 不在当前正在使用的 view hierarchy 里面,且你的控制器实现了
loadView 方法,那么这个 view 将被 release, loadView 方法将被再次调用来建立一个新的 view。


nil是空的意思。至关于NULL。nil表示一个Objctive-C对象,这个对象的指针指向空(没有东西就是空)。

首字母大写的Nil和nil有一点不同,Nil定义一个指向空的类(是Class,而不是对象)。
在Objective-C里,nil对象被设计来跟NULL空指针关联的。他们的区别就是nil是一个对象,而NULL只是一个值
在Objective-C中,你来对象在功能上等价于其余不少语言中的NULL指针。区别是能够对nil调用方法,而不致致使程序崩溃或抛出异常。 函数

--------------------------------------------------------------------------------------------------------------------- 布局

1、loadView
永远不要主动调用这个函数。view
controller会在view的property被请求而且当前view值为nil时调用这个函数
若是你手动建立view,你应该重载这个函数。若是你用IB建立view并初始化view
controller,那就意味着你使用initWithNibName:bundle:方法,这时,你不该该重载loadView函数。
这个方法的默认实现是这样:先寻找有关可用的nib文件的信息,根据这个信息来加载nib文件,若是没有有关nib文件的信息,默认实现会建立一个空白的UIView对象,而后让这个对象成为controller的主view。
因此,重载这个函数时,你也应该这么作。并把子类的view赋给view属性(property)(你create的view必须是惟一的实例,而且不被其余任何controller共享),并且你重载的这个函数不该该调用super。
若是你要进行进一步初始化你的views,你应该在viewDidLoad函数中去作。在iOS
3.0以及更高版本中,你应该重载viewDidUnload函数来释听任何对view的引用或者它里面的内容(子view等等)。

这个网上的资料都说的很不全面,尤为是蓝色字部分。
2、viewDidLoad
这个函数在controller加载了相关的views后被调用,而不论这些views存储在nib文件里仍是在loadView函数中生成。而多数状况下是作nib文件的后续工做。
3、viewDidUnload
这个函数是viewDidLoad的对立函数。在程序内存欠缺时,这个函数被controller调用,来释放它的view以及view相关的对象。
因为controller一般保存这view以及相关object的引用,因此你必须使用这个函数来放弃这些对象的全部权以便内存回收。但不要释放那些难以重建的数据。
一般controller会保存nib文件创建的views的引用,可是也可能会保存着loadView函数建立的对象的引用。最完美的方法是使用合成器方法:
self.myCertainView = nil
这样合成器会release这个view,若是你没有使用property,那么你得本身显示释放这个view。
网上对这个函数的描述含含糊糊,看了等于没看。
4、结论
因此流程应该是这样:
(loadView/nib文件)来加载view到内存
——>viewDidLoad函数进一步初始化这些view
——>内存不足时,调用viewDidUnload函数释放views
—->当须要使用view时有回到第一步
如此循环
动画

---------------------------------------------------------------------------------------------------------------------- spa

viewDidUnload方法‍
当系统内存吃紧的时候会调用该方法(注:viewController没有被dealloc)
内存吃紧时,在iPhone OS 3.0以前didReceiveMemoryWarning是释放无用内存的惟一方式,可是OS
3.0及之后viewDidUnload方法是更好的方式

在该方法中将全部IBOutlet(不管是property仍是实例变量)置为nil(系统release
view时已经将其release掉了)
设计

-----------------------------------------------------------------------------------------------------------------------注意iphone开发中的这两个函数viewWillAppear和viewDidAppear
每当视图准备在屏幕上显示,或者视图已在屏幕上彻底显示时,将调用这两个方法。
viewWillAppear:方法更新准备显示的视图的信息。调用时,视图可能尚未被加载。
使用viewDidAppear:来触发视图彻底显示在屏幕上以后的行为,例如任何动画。
loadView和viewDidLoad方法。假设不使用xib文件对视图布局,那么loadView方法必须设置屏幕,并对任何子视图布局。每当继承一个具体的子类,例如UITableViewController或UITabBarController时,务必调用[super
loadView]或者实现viewDidLoad。这样一来,在进行定制以前,父类能够对屏幕进行适当的设置。当代码基于具体的子类时,苹果的文档和示例代码鼓励使用viewDidLoad。


iPhone开发必不可少的要用到这两个方法(loadView VS viewDidLoad
)
他们均可以用来在视图载入的时候,初始化一些内容 可是他们有什么区别呢?


viewDidLoad
此方法只有当view从nib文件初始化的时候才被调用
viewDidLoad用于初始化,加载时用到的。
loadView 此方法在控制器的view为nil的时候被调用。
此方法用于以编程的方式建立view的时候用到。
[font=lucida grande  ]loadView是使用代码生成视图的时候,当视图第一次载入的时候调用的方法。用于使用(写)代码来实现控件。用于使用代码生成控件的函数。

viewDidLoad
,不管是从xib中加载视图,仍是从loadview生成视图,都会被调用。

---------------------------------------------------------------------------------------------------------------------

iPhone开发必不可少的要用到这两个方法他们均可以用来在视图载入的时候,初始化一些内容。
可是他们有什么区别呢?

viewDidLoad
此方法只有当view从nib文件初始化的时候才被调用

loadView
此方法在控制器的view为nil的时候被调用
此方法用于以编程的方式建立view的时候用到。

如:

-
(void)loadView {

   
UIView *view = [[UIView alloc] initWithFrame:[UIScreen   
mainScreen].applicationFrame];
    [view
setBackgroundColor:_color];

    self.view = view;
    [view release];
}

你在控制器中实现了loadView方法,那么你可能会在应用运行的某个时候被内存管理控制调用。 若是设备内存不足的时候, view
控制器会收到didReceiveMemoryWarning的消息。
默认的实现是检查当前控制器的view是否在使用。
若是它的view不在当前正在使用的view hierarchy里面,且你的控制器实现了loadView方法,那么这个view将被release,
loadView方法将被再次调用来建立一个新的view。

------------------------------------------------------------------------------------------------------------------------

loadView 和 viewDidLoad 是 iPhone
开发中确定要用到的两个方法。

他们均可以用来在视图载入的时候初始化一些内容。
可是他们有什么区别呢?

viewDidLoad 方法只有当 view 从 nib
文件初始化的时候才被调用。viewDidLoad 用于初始化,加载时用到。


loadView 方法在控制器的 view 为nil 的时候被调用此方法用于以编程的方式建立 view 的时候用到。loadView
是使用代码生成视图的时候,当视图第一次载入的时候调用的方法。用于使用(写)代码来实现控件。用于使用代码生成控件的函数。
如:

     
- ( void ) loadView {
    UIView *view = [ [ UIView
alloc] initWithFrame:[ UIScreen
mainScreen] .applicationFrame] ;
[ view
setBackgroundColor:_color] ;
    self.view = view;
[ view release]
;
}

你在控制器中实现了 loadView
方法,那么你可能会在应用运行的某个时候被内存管理控制调用。若是设备内存不足的时候,view 控制器会收到 didReceiveMemoryWarning
的消息
默认的实现是检查当前控制器的 view 是否在使用。 若是它的 view 不在当前正在使用的 view hierarchy
里面,且你的控制器实现了 loadView 方法,那么这个 view 将被 release, loadView 方法将被再次调用来建立一个新的
view。

------------------------------------------------------------------------------------------------------------------------

viewDidUnload方法
当系统内存吃紧的时候会调用该方法(注:viewController没有被dealloc)
内存吃紧时,在iPhone OS 3.0以前didReceiveMemoryWarning是释放无用内存的惟一方式,可是OS
3.0及之后viewDidUnload方法是更好的方式

------------------------------------------------------------------------------------------------------------------------

由init、loadView、viewDidLoad、viewDidUnload、dealloc的关系提及
 init方法
  在init方法中实例化必要的对象(听从LazyLoad思想)
‍  init方法中初始化ViewController自己
 loadView方法
  当view须要被展现而它倒是nil时,viewController会调用该方法。不要直接调用该方法。
  若是手工维护views,必须重载重写该方法
  若是使用IB维护views,必须不能重载重写该方法
 loadView和IB构建view
  你在控制器中实现了loadView方法,那么你可能会在应用运行的某个时候被内存管理控制调用。 若是设备内存不足的时候, view
控制器会收到didReceiveMemoryWarning的消息。 默认的实现是检查当前控制器的view是否在使用。 若是它的view不在当前正在使用的view
hierarchy里面,且你的控制器实现了loadView方法,那么这个view将被release,
loadView方法将被再次调用来建立一个新的view。

 viewDidLoad方法
  viewDidLoad
此方法只有当view从nib文件初始化的时候才被调用。
  重载重写该方法以进一步定制view
  在iPhone OS
3.0及以后的版本中,还应该重载重写viewDidUnload来释放对view的任何索引

  viewDidLoad后调用数据Model

 viewDidUnload方法‍
  当系统内存吃紧的时候会调用该方法(注:viewController没有被dealloc)
  内存吃紧时,在iPhone OS 3.0以前didReceiveMemoryWarning是释放无用内存的惟一方式,可是OS
3.0及之后viewDidUnload方法是更好的方式

  在该方法中将全部IBOutlet(不管是property仍是实例变量)置为nil(系统release
view时已经将其release掉了)

  在该方法中释放其余与view有关的对象、其余在运行时建立(但非系统必须)的对象、在viewDidLoad中被建立的对象、缓存数据等
 release对象后,将对象置为nil(IBOutlet只须要将其置为nil,系统release
view时已经将其release掉了)

  通常认为viewDidUnload是viewDidLoad的镜像,由于当view被从新请求时,viewDidLoad还会从新被执行
  viewDidUnload中被release的对象必须是很容易被从新建立的对象(好比在viewDidLoad或其余方法中建立的对象),不要release用户数据或其余很难被从新建立的对象
 dealloc方法
  viewDidUnload和dealloc方法没有关联,dealloc仍是继续作它该作的事情。

文章二:
  viewDidUnload
该方法在收到内存警告,同时该视图并不在当前界面显示时候会被调用,此时该 controller 的 view
已经被释放并赋值为 nil。
接下来你要作的是
把实例变量的子视图释放(IBOulet 的,以及本身添加的)
其余实例变量,好比以前在
-viewDidLoaded 中实例的数据数组、http 请求释放掉
    由于当该 viewController 再次被激活准备显示时(好比
navigationControler 返回到上一级),vc 发现本身的 view 为空后会重复以前的流程直到把 view
给建立起来。若没将本身额外添加的子视图,各类类实例变量释放,这里便会从新再次建立

---------------------------------------------------------------------------------------------------------------------

loadView 和 viewDidLoad 的区别
分享
  

loadView 和 viewDidLoad 是 iPhone 开发中确定要用到的两个方法。
他们均可以用来在视图载入的时候初始化一些内容。 可是他们有什么区别呢?
    viewDidLoad 方法只有当 view 从 nib
文件初始化的时候才被调用。viewDidLoad 用于初始化,加载时用到。
    loadView 方法在控制器的 view 为 nil 的时候被调用。
此方法用于以编程的方式建立 view 的时候用到。loadView
是使用代码生成视图的时候,当视图第一次载入的时候调用的方法。用于使用(写)代码来实现控件。用于使用代码生成控件的函数。如:
-
(void)loadView {
    UIView * tmp=[[UIView alloc] initWithFrame:CGRectMake(0,
0, 320, 480)];
    tmp.backgroundColor=[UIColor
orangeColor];
    self.view=tmp;
    [tmp release];
}
    你在控制器中实现了
loadView 方法,那么你可能会在应用运行的某个时候被内存管理控制调用。 若是设备内存不足的时候, view 控制器会收到
didReceiveMemoryWarning 的消息。 默认的实现是检查当前控制器的 view 是否在使用。 若是它的 view 不在当前正在使用的 view
hierarchy 里面,且你的控制器实现了 loadView 方法,那么这个 view 将被 release, loadView
方法将被再次调用来建立一个新的 view。

----------------------------------------------------------------------------------------------------------------------

-(void)viewWillAppear:(BOOL)animated,- (void)viewDidLoad
的区别。

viewwillappear是每次视图控制器的视图出现前执行的代码。而viewdidload是每次视图控制器载入是执行的代码。
好比说:当a视图控制器的视图第一次出现是两个都要执行,但当a被push后有pop回来时,只有viewwillappear执行。


loadView 和 viewDidLoad 的区别
分享
  

loadView 和 viewDidLoad 是 iPhone 开发中确定要用到的两个方法。 他们均可以用来在视图载入的时候初始化一些内容。 可是他们有什么区别呢?     viewDidLoad 方法只有当 view 从 nib 文件初始化的时候才被调用。viewDidLoad 用于初始化,加载时用到。     loadView 方法在控制器的 view 为 nil 的时候被调用。 此方法用于以编程的方式建立 view 的时候用到。loadView 是使用代码生成视图的时候,当视图第一次载入的时候调用的方法。用于使用(写)代码来实现控件。用于使用代码生成控件的函数。如: - (void)loadView {     UIView * tmp=[[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];     tmp.backgroundColor=[UIColor orangeColor];     self.view=tmp;     [tmp release]; }     你在控制器中实现了 loadView 方法,那么你可能会在应用运行的某个时候被内存管理控制调用。 若是设备内存不足的时候, view 控制器会收到 didReceiveMemoryWarning 的消息。 默认的实现是检查当前控制器的 view 是否在使用。 若是它的 view 不在当前正在使用的 view hierarchy 里面,且你的控制器实现了 loadView 方法,那么这个 view 将被 release, loadView 方法将被再次调用来建立一个新的 view。

相关文章
相关标签/搜索