亚马逊培训费用一般多少,seo专业培训课程,百度2019旧版本下载,旅游网页设计模板网站免费一、dealloc的使用 场景一#xff1a;
最近在优化一个数据接收协议#xff0c;就是在controller类init时进行订阅数据操作#xff0c;在dealloc中进行反订阅数据操作。页面跳转场景如下#xff1a;主界面self.view然后还有A、B、C、D四个子view可以用来点击切换。页面的加…一、dealloc的使用 场景一
最近在优化一个数据接收协议就是在controller类init时进行订阅数据操作在dealloc中进行反订阅数据操作。页面跳转场景如下主界面self.view然后还有A、B、C、D四个子view可以用来点击切换。页面的加载是采用addSubview的方式如下 A *vc [[A alloc] initWithFrame:self.mainframe]; vc.delegate self; mCurConttentViewController vc; [self.view addSubview:mCurConttentViewController.view];
在addSubView之后便开始加载新的页面。在加载新的页面之前需要将之前的页面清空不然反复切换会将导致[self.view.subviews count]这个数值不断的增大。 [mCurConttentViewController.view removeFromSuperview]; [self removeSubViewController:mCurConttentViewController];
PSremoveFromSuperview类似一个剪枝执行此函数就等于在树形结构中找到该节点剪去该节点及其子节点而并非只是剪去该节点自己。同时另一个操作就是把该对象从响应者链中移除所以还需要将view继续remove才能从内存中移除。
在新的页面加载进来之后原来的页面自动执行dealloc方法如果没有以上的remove操作便不会执行dealloc方法
场景二
我写过一个拍照相机的CameraViewController用它来拍摄照片。由主界面进入相机界面是采取模态切换的方式如下 CameraViewController *wCV [[CameraViewController alloc] initWithNibName:CameraViewController bundle:nil]; wCV.delegate self; wCV.wantsFullScreenLayout YES; [[AppController instance] presentModalViewController:wCV animated:YES];
在相机拍摄结束后离开相机界面
[self dismissModalViewControllerAnimated:YES];
此时发现dealloc方法会被执行。
由此可见dealloc是在当前视图被remove或者dismissModalViewControllerAnimated等释放操作时清空当前视图viewController里面实体和数据用来释放内存。该方法也是自动调用无需要手动执行。dealloc里面你可以定义自己需要的释放操作比如上面我说的一个数据协议的反订阅操作等。 二、与viewDidUnload的区别
viewDidUnload是在ios 6之前的版本使用的与viewDidLoad对应。根据它的解释文档可知viewDidUnload主要发生在OS内存警告时除当前正在展示的view所属viewController 以外所有已经在内存里面的viewController 会执行viewDidUnload 方法当前viewController不执行viewDidUnload但是这些viewController不会被dealloc。英文解释如下
// Called after the view controllers view is released and set to nil. For example, a memory warning which causes the view to be purged. Not invoked as a result of -dealloc.
- (void)viewWillUnload NS_DEPRECATED_IOS(5_0,6_0); - (void)viewDidUnload NS_DEPRECATED_IOS(3_0,6_0);
在撰写此笔记时ios 8已经出现。viewDidUnload在ios 6以后的版本就不在支持了。
三、参考资料
http://blog.csdn.net/tonny_guan/article/details/8059236
http://blog.csdn.net/likendsl/article/details/7573504