Phone开发必不可少的要用到这两个方法。
他们都可以用来在视图载入的时候,初始化一些内容。 但是他们有什么区别呢?
viewDidLoad
此方法只有当view从nib文件初始化的时候才被调用。viewDidLoad用于初始化,加载时用到的。
loadView
此方法在控制器的view为nil的时候被调用。 此方法用于以编程的方式创建view的时候用到。loadView是使用代码生成视图的时候,当视图第一次载入的时候调用的方法。用于使用(写)代码来实现控件。用于使用代码生成控件的函数。如:
你在控制器中实现了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 请求释放掉。
因为当该为空后会重复之前的流程直到把 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生成视图,都会被调用。
原帖地址 http://www.1000phone.net/forum.php?mod=viewthread&tid=10507&extra=page%3D1%26filter%3Dauthor%26orderby%3Ddateline%26orderby%3Ddateline
他们都可以用来在视图载入的时候,初始化一些内容。 但是他们有什么区别呢?
viewDidLoad
此方法只有当view从nib文件初始化的时候才被调用。viewDidLoad用于初始化,加载时用到的。
loadView
此方法在控制器的view为nil的时候被调用。 此方法用于以编程的方式创建view的时候用到。loadView是使用代码生成视图的时候,当视图第一次载入的时候调用的方法。用于使用(写)代码来实现控件。用于使用代码生成控件的函数。如:
你在控制器中实现了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 请求释放掉。
因为当该为空后会重复之前的流程直到把 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生成视图,都会被调用。
原帖地址 http://www.1000phone.net/forum.php?mod=viewthread&tid=10507&extra=page%3D1%26filter%3Dauthor%26orderby%3Ddateline%26orderby%3Ddateline