Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2676513
  • 博文数量: 877
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 5921
  • 用 户 组: 普通用户
  • 注册时间: 2013-12-05 12:25
个人简介

技术的乐趣在于分享,欢迎多多交流,多多沟通。

文章分类

全部博文(877)

文章存档

2021年(2)

2016年(20)

2015年(471)

2014年(358)

2013年(26)

分类: iOS平台

2015-08-27 10:47:28

【ios】ARC中重写NSObject的dealloc方法的一个小细节
http://blog.csdn.net/ashqal/article/details/12614901

大家都知道ARC后是不能显示地调用dealloc方法,但是可以重载此方法。

突然考虑到如果父类有属性需要释放,而子类重写了此方法,

且重写子类dealloc时不能调用[super dealloc]会不会把父类的方法覆盖了

写了个测试类



  1. @interface ClassA:NSObject  
  2.   
  3. @end  
  4.   
  5. @implementation ClassA  
  6. -(void)dealloc  
  7. {  
  8.     NSLog(@"dealloc ClassA");  
  9. }  
  10. @end  
  11.   
  12.   
  13. @interface ClassB:ClassA  
  14.   
  15. @end  
  16.   
  17. @implementation ClassB  
  18. -(void)dealloc  
  19. {  
  20.     NSLog(@"dealloc ClassB");  
  21. }  
  22. @end  
  23.   
  24. //main方法内  
  25.   
  26. ClassA* b = [[ClassB alloc] init];  
  27. b = nil;  

输出结果为



[plain] view plaincopy
  1. 2013-10-11 12:48:25.721 ARCDeallocTestDemo[2420:a0b] dealloc ClassB  
  2. 2013-10-11 12:48:25.723 ARCDeallocTestDemo[2420:a0b] dealloc ClassA  

结论


arc下,虽然没有显式调用父类的[super dealloc],但结果仍然会调用,我猜测编译期间编译器会聪明的帮我们加上了[super dealloc]。

阅读(1104) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~