UIViewController加载与销毁

29 篇文章 0 订阅
16 篇文章 0 订阅

view有两个重要circle

加载

  • view(属性) 每一个UIViewController都会有property,叫“view”,这是default的,在UIViewController初始化后,当程序某部分访问view时,这时如果view是没有在内存中存在,view controller会调用loadView方法。

  • loadView 只有在你在代码中创建实现你的view时需要在对应UIViewController里重写该方法。

    • 如果你重写了loadView,你需要创建所有相关的views,并且赋值view一个非nil值。
    • 如果你没有重写这个方法,默认初始化方式使用view controller的nibName和nibBundle属性来试图从一个专有的nib文件加载。

      • 如果没有找到那个专有的那个nib文件,默认会去找一个名字与view controller相匹配的nib文件去加载。
      • 如果没有有效的nib文件,默认实现最后会返回一个空view,并且赋值给view。
    • 注意:不要[super loadView],减少不必要的资源消耗

  • viewDidLoad 无论你是否用Interface Builder创建nib文件创建UIViewController ,这个方法都会被调用的。它是用来做一些额外在你架子啊你的view时需要做的任务。

  • viewDidUnload 如果在UIViewController里存储了IBOutlet,和UIView或者其子类,在viewDidUnload里都要赋值它们为nil,用self.xxx方式,因为这同时会出发setter里的release方法。否则会有leak。

UIViewController load cycle

卸载

view被卸载发生在程序收到系统的low memory warning时。

每一个view controller都会调用自己的didReceiveMemoryWarning方法。

如果你重写了这个方法,你需要release掉所有你的view controller不在使用的自定义数据。一定不要在这个方法里release你view controller的view property。你必须要使用super方法来执行一些默认操作。

默认实现是只release那些执行release操作安全的view。

如果view controller release它的view,它会调用viewDidUnload方法,你可以重写这个方法来实现一些额外的清除你的views工作。

UIViewController unload cycle


(转自:http://danielxu.github.io/blog/2013/01/11/uiviewcontroller-life-cycle/)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值