viewcontroller 的 didreceivememorywarning 是在什么时候被调用的
1个回答
2016-07-07
展开全部
一个UIViewController的View可能有很多小的子view。这些子view很多时候被盖在最后,我们在最外层ViewController的viewDidLoad方法中,用addSubview增加了大量的子view。这些子view大多数不会一直处于界面上,只是在某些情况下才会出现,例如登陆失败的提示view,上传附件成功的提示view,网络失败的提示view等。但是虽然这些view很少出现,但是我们却常常一直把它们放在内存中。另外,当收到内存警告时,我们只能自己手工把这些view从superview中去掉。2.替代方法聪明的你,也许已经体会到了,该transitionFromViewController方法闪亮登场:苹果新的API增加了addChildViewController方法,并且希望我们在使用addSubview时,同时调用[selfaddChildViewController:child]方法将subview对应的viewController也加到当前ViewController的管理中。对于那些当前暂时不需要显示的subview,只通过addChildViewController把subViewController加进去;需要显示时再调用transitionFromViewController方法。将其添加进入底层的ViewController中。这样做的好处:1.无疑,对页面中的逻辑更加分明了。相应的View对应相应的ViewController。2.当某个子View没有显示时,将不会被Load,减少了内存的使用。3.当内存紧张时,没有Load的View将被首先释放,优化了程序的内存释放机制。3.transitionFromViewController:toViewController:duration:options:animations:completion方法-(void)transitionFromViewController:(UIViewController*)fromViewControllertoViewController:(UIViewController*)toViewControllerduration:(NSTimeInterval)durationoptions:(UIViewAnimationOptions)optionsanimations:(void(^)(void))animationscompletion:(void(^)(BOOLfinished))completion在两个子视图控制器中转换。支持的iOS5.0以及以后的版本。fromViewController:当前显示在父视图控制器中的子视图控制器toViewController:将要显示的子视图控制器duration:完成过渡的时间;单位:秒。options:指定的过渡效果。animations:转换过程中,的动画。是个Block块操作。completion:过渡完成后,执行的Block块操作。该方法,执行完以后,fromViewController指代的视图控制器的View将从界面消失;toViewController所指代的视图控制器的View将被载入到页面中。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询