ios-day11-07(控制器的生命周期)

本文详细介绍了iOS应用中视图控制器的生命周期方法,包括加载、显示、卸载等关键步骤,并探讨了内存管理策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如图所示:



1,当控制器1的view加载完毕调用控制器1的viewDidLoad方法

2,当控制器1的view即将显示调用控制器1的viewWillAppear方法

3,当控制器1的view显示完毕调用控制器1的viewDidAppear方法

假设此时我们从控制器1跳转到另一个控制器2:

4,调用控制器2的viewDidLoad方法表示控制器2的view加载完毕

5,调用控制器1的viewWillDisappear方法表示控制器1的view即将消失

6,调用控制器2的viewWillAppear方法表示控制器2的view即将显示

7,调用控制器1的viewDidDisappear方法表示控制器1的view已经完全消失

8,调用控制器2的viewDidAppear方法表示控制器2的view已经显示完毕

假设此时内存严重不足,XXAppDelegate中的didReceiveMonoryWarning方法被调用:

这时控制器1和控制器2的didReceiveMemoryWarning方法也会被调用,但是由于当前显示的是控制器2的view,所以控制器2的view比控制器1的view优先级要高,这时控制器1的view就会被销毁:

9,调用控制器1的viewWillUnload方法表示控制器1的view即将被销毁

10,调用控制器1的viewDidUnload方法表示控制器1的view已经完全被销毁,

(假设控制器1有一个属性@property (nonatomic, strong) NSArray *persons;

我们应该在控制器1的viewDidUnload方法中释放内存:self.persons = nil;

不应该写:[self.persons release];这是因为如果支持ARC的话会报错。)

假设此时我们要从控制器2返回到控制器1,因为控制器1的view已经被销毁,这时会重新加载控制器1的view,当控制器1的view加载完毕调用控制器1的viewDidLoad方法,就这样开始了循环。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值