zoukankan      html  css  js  c++  java
  • [内存管理实践 之 1]在返回按钮中,释放内存

    在返回按钮中,释放内存:

    -(IBAction)btnBack:(id)sender
    {
        if ([self.str_superViewName isEqualToString:@"ShakeViewController"]) {
            [configData setObject:@"YES" forKey:@"isShake"];
        }
        
    //移出两个比较大的重要的子页面
        [self.uisv_scrollView0 removeFromSuperview];
        [self.scrView removeFromSuperview];
       
    //移出所有子页面
     NSArray *views = [self.view subviews];
        for (id obj in views) {
            NSLog(@"obj class === %@",[obj class]);
            [obj removeFromSuperview];
        }
        
       //数组中的内容要一个一个释放
        [self.nsma_pageControllImages removeAllObjects];
        
     // 如果不写 release  则,仍然内存泄漏
        [uisv_scrollView0 release];
        [scrView release];
        [nsma_pageControllImages release];
        
    //可写  可不写,影响不大
    //    self.uisv_scrollView0 = nil;
    //    self.scrView = nil;
    //    self.nsma_pageControllImages = nil;
        
        [self.view removeFromSuperview];
    }

    如果你的页面使用较大的图片或者显示较大量的数据信息。那么一定要在返回按钮中释放内存,而不仅仅是在 viewDidUnload 和 dealloc 两个方法中释放内存。 实践证明,当应用程序收到 内存警告的消息再去释放内存时,往往已经来不及了。

    - (void)viewDidUnload
    {
        [super viewDidUnload];
        // Release any retained subviews of the main view.
        // e.g. self.myOutlet = nil;
        
        NSLog(@"===进入viewDidUnload");
        self.nsma_pageControllImages = nil;
        self.scrView = nil;
        self.uisv_scrollView0 = nil;
    }
    
    -(void)dealloc
    {
        NSLog(@"====进入dealloc");
    //    [nsma_pageControllImages release];
    //    [scrView release];
    //    [uisv_scrollView0 release];
        [super dealloc];
    }
  • 相关阅读:
    about_并查集
    MST_prim
    MST_kruskal
    物联网的未来:关于物联网的10个预测
    如何展现云计算安全领导力
    虚拟机发展依然强劲,但会被容器取代吗?
    如何从人工智能部署中获取最大价值
    维特根斯坦:为何夸大人工智能是对人性的贬损?
    区块链技术还在不断创新
    区块链真正能用来干什么?这5件事说清楚了
  • 原文地址:https://www.cnblogs.com/ygm900/p/3128347.html
Copyright © 2011-2022 走看看