[super dealloc]内存释放的先后顺序_移动开发_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > 移动开发 > [super dealloc]内存释放的先后顺序

[super dealloc]内存释放的先后顺序

 2013/10/26 12:44:47  ACM_Someone like you  博客园  我要评论(0)
  • 摘要:心得:从前做内存释放,只是觉得应该,没体会到这个的重要性,如果不及时释放就会有很多内存泄露,就像我早期遇到的前赴后继的崩溃,比如:没使用完,就释放会崩溃等明显的release问题。作为全局的变量释放,要按栈的顺序释放。否则又不知何时会崩溃。虽然现在有自动控制释放机制了,但是本人也觉得有必要知道这些方法,毕竟代码更新、兼容什么的仍然还要考虑到内存问题的。Objective-c语言中最头疼的事就是内存释放,申明一个变量后记得一定要释放这个变量,我们定义的全局变量都是在-(void
  • 标签:all 内存

 心得:从前做内存释放,只是觉得应该,没体会到这个的重要性,如果不及时释放就会有很多内存泄露,就像我早期遇到的前赴后继的崩溃,比如:没使用完,就释放会崩溃等明显的release问题。
     作为全局的变量释放 ,要按栈的顺序释放。否则又不知何时会崩溃。
      虽然现在有自动控制释放机制了,但是本人也觉得有必要知道这些方法,毕竟代码更新、兼容什么的仍然还要考虑到内存问题的。 

break: normal; color: #362e2b; font-family: Arial;">Objective-c 语言中最头疼的事就是内存释放,申明一个变量后记得一定要释放这个变量,我们定义的全局变量都是在 - (void)dealloc 函数中释放的; 里面继承了一个[super dealloc]方法,   有些同学平时自己释放内存都是写在 [super dealloc]的后面但是在Objective-c 中不能这样写,所有的释放都必须写在 [super dealloc]的前面   -------错误的写法--------  

- (void)dealloc

{

    

    [super dealloc];

    [XXX release];

    ......

}

 

-------正确的写法--------

 

 

- (void)dealloc

{

    [XXX release];

    [super dealloc];

    ......

}

 

原 因是:“你所创建的每个类都是从父类,根类继承来的,有很多实例变量也会继承过来,这部分变量有时候会在你的程序内使用,它们不会自动释放内存,你需要调 用父类的 dealloc方法来释放,然而在此之前你需要先把自己所写类中的变量内存先释放掉,否则就会造成你本类中的内存积压,造成泄漏”.不过在IOS6有了ARC后就不用手动去释放了,也没有此函数了!

发表评论
用户名: 匿名