addChildViewController: VS addSubview:

本文探讨了addChildViewController与addSubview的区别和使用场景。addChildViewController自iOS5引入,能更好地处理内存管理,特别是在需要动态变化的subview中,与父控制器的生命周期同步。联合使用可以实现视图间的动画跳转,降低耦合度,并在内存警告时自动释放非激活状态的控制器内存。建议在需要时使用addChildViewController以遵循Apple的最佳实践。
摘要由CSDN通过智能技术生成

前言

最近看大神们的博客时,发现一个之前一直没注意到的API:addChildViewController:很有用武之地,很大程度上弥补了经验不深的开发者(ps:说得好像不是我一样!)常使用的addSubview:的不足,而且Apple官方也希望我们在使用[self.view addSubview:XX]的同时调用[self addChildViewController:XX]。
addChildViewController:是从iOS5开始引入的,那为什么Apple要做出这个改变,下面我们就addSubview:单独使用与联合addChildViewController:使用比较一番!


权衡利弊

在某些场景中,UIViewController的view上包含许多的subview,而这其中的view有些是在特定的状态下才会显示(比如:登录、注册和订单的提示信息),对于经验比较浅我们通常就是在viewDidLoad中通过[self.view addSubview:XX]方法将subview加入控制器的view,而对于当前不需要显示的subview就将它隐藏起来。

乍一看好像没什么问题,效果也和预期的一样,而在收到内存警告时我们就只能手动的将subview从superView中移除(想想怎么移除?),同时你还得仔细想想怎样的移除顺序才能保证App的功能受影响程度最小,即使当前没有显示的view其实也存在于内存中,如果此次的操作view始终不会出现,那就白白浪费了内存。每个App的内存都有个阀值,当超过这个值时,系统将关闭App,所以在收到内存警告时,要尽可能多的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值