iphone 程序view的流程

转载 2012年03月26日 14:05:32

from:http://www.cocoachina.com/bbs/read.php?tid=38766&page=3


由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 给创建起来。若没将自己额外添加的子视图,各种类实例变量释放,这里便会重新再次创建

iPhone之手动切换View示例程序

  • 2012年08月18日 01:10
  • 591KB
  • 下载

iPhone & iPad程序运行流程浅谈

我在刚接触iOS开发的时候,也对这个运行流程模糊不清。希望这边文章能对初学的朋友给予帮助。1. 和大多数语言一样,每一个iPhone应用也都是从主函数开始运行,它的main函数都在XCode的Othe...

iPhone企业应用实例分析之二:程序处理流程

iPhone企业应用实例分析之二:程序处理流程程序处理流程总体框图如图5-4所示。(1)用户启动程序时,显示闪屏。(2)显示系统主菜单,主要有“我的文档”、“部门文档”、“文档搜索”和“统计图查询”。...

iPhone应用提交流程:如何将App程序发布到App Store?

对于刚加入iOS应用开发行列的开发者来说,终于经过艰苦的Coding后完成了第一个应用后最重要的历史时刻就是将应用程序提交到iTunes App Store。Xcode 4.2开发工具已经把App提交...

iOS/iPhone 程序文件目录结构以及启动流程

要想清晰的理解IOS应用程序的启动过程,毫无疑问需要深入了解一下ios应用程序的文件系统。一个ios应用程序都有一个属于自己沙盒(sandbox),应用沙盒就是文件系统目录,并且与文件系统的其他部分隔...
  • dqjyong
  • dqjyong
  • 2012年08月05日 16:01
  • 15276

iPhone应用提交流程:如何将App程序发布到App Store?

对于刚加入iOS应用开发行列的开发者来说,终于经过艰苦的Coding后完成了第一个应用后最重要的历史时刻就是将应用程序提交到iTunes App Store。Xcode 4.2开发工具已经把App提交...
  • strliu
  • strliu
  • 2012年08月06日 09:11
  • 740

iOS/iPhone 程序文件目录结构以及启动流程

要想清晰的理解IOS应用程序的启动过程,毫无疑问需要深入了解一下ios应用程序的文件系统。一个ios应用程序都有一个属于自己沙盒(sandbox),应用沙盒就是文件系统目录,并且与文件系统的其他部分隔...

iPhone程序运行流程浅谈

我在刚接触iOS开发的时候,也对这个运行流程模糊不清。 希望这边文章能对初学的朋友给予帮助。 1. 和大多数语言一样,每一个iPhone应用也都是从主函数开始运行,它的main函数都在XCod...
  • RiverAM
  • RiverAM
  • 2012年02月13日 09:45
  • 882

iphone程序执行流程的几点注意

开发iphone平台运行程序,深刻理解程序执行流程对以后开发非常重要,我仅对我走过的弯路后才认识到的一些东西写出来,希望能给朋友们一些帮助,少走一些弯路: 对于:int reVal = UIAppl...

iPhone应用提交流程:如何将App程序发布到App Store?

对于刚加入iOS应用开发行列的开发者来说,终于经过艰苦的Coding后完成了第一个应用后最重要的历史时刻就是将应用程序提交到iTunes App Store。Xcode 4.2开发工具已经把App提交...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iphone 程序view的流程
举报原因:
原因补充:

(最多只允许输入30个字)