【ios】ARC中重写NSObject的dealloc方法的一个小细节
2013-10-11 12:51
477 查看
大家都知道ARC后是不能显示地调用dealloc方法,但是可以重载此方法。
突然考虑到如果父类有属性需要释放,而子类重写了此方法,
且重写子类dealloc时不能调用[super dealloc]会不会把父类的方法覆盖了
写了个测试类
输出结果为
结论
arc下,虽然没有显式调用父类的[super dealloc],但结果仍然会调用,我猜测编译期间编译器会聪明的帮我们加上了[super dealloc]。
突然考虑到如果父类有属性需要释放,而子类重写了此方法,
且重写子类dealloc时不能调用[super dealloc]会不会把父类的方法覆盖了
写了个测试类
@interface ClassA:NSObject @end @implementation ClassA -(void)dealloc { NSLog(@"dealloc ClassA"); } @end @interface ClassB:ClassA @end @implementation ClassB -(void)dealloc { NSLog(@"dealloc ClassB"); } @end //main方法内 ClassA* b = [[ClassB alloc] init]; b = nil;
输出结果为
2013-10-11 12:48:25.721 ARCDeallocTestDemo[2420:a0b] dealloc ClassB 2013-10-11 12:48:25.723 ARCDeallocTestDemo[2420:a0b] dealloc ClassA
结论
arc下,虽然没有显式调用父类的[super dealloc],但结果仍然会调用,我猜测编译期间编译器会聪明的帮我们加上了[super dealloc]。
相关文章推荐
- iOS arc和mrc下重写set方法
- iOS arc(自动释放)和mrc(手动释放)下重写set方法
- iOS工程调试小技巧一:交换dealloc、字体方法,重写description
- iOS arc和mrc下重写set方法
- iOS —— ARC、MRC 下dealloc 方法存在的意义
- ios 画pdf时不会自动换行,自己写的一个自动换行的小方法
- iOS ARC注释和错误的解决方法在使用
- 分享一个iOS下实现基本绘画板功能的简单方法
- iOS - 一个类里面写两个UIAlertView 的方法:
- iOS方法重写
- iOS开发UI篇-懒加载、重写setter方法赋值
- ios开发同一个版本多次提交不想改变版本号的解决方法
- 建立一个对象模型的时候,为什么要重写hashCode与equals方法
- iOS WKWebview的dealloc方法崩溃问题
- 当编写一个实体类去实现一个接口,或者抽象类时,在重写的方法上一直提示remove掉@Override;
- iOS一种简单的改变一个label上范围内字体颜色和大小的方法
- arc中dealloc方法不调用
- ios开发同一个版本多次提交不想改变版本号的解决方法
- java中,一个类实现某个接口,必须重写接口中的所有方法吗
- IOS开发之 ---- ARC下的Dealloc保留原因[转]