前言
最近看大神们的博客时,发现一个之前一直没注意到的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,所以在收到内存警告时,要尽可能多的