- dealloc 的正确的书写方式 :
- (void)dealloc{
[XXX release];
[super dealloc];
}
- 如下代码的打印结果是 :
// - 声明
@interface Book : NSObject @end
@implementation Book -(void)dealloc{NSLog(@"%s", __func__);} @end
@interface Person : NSObject @property(nonatomic, strong)Book *book; @end
@implementation Person -(void)dealloc{NSLog(@"%s", __func__);} @end
// - 测试代码
Book *b = [Book new];
Person *p = [Person new];
p.book = b;
// - 打印结果:
2019-06-17 23:27:35.729386+0800 LCYHomework[1282:74417] -[Person dealloc]
2019-06-17 23:27:35.828936+0800 LCYHomework[1282:74417] -[Book dealloc]
通过上边得出的结论 : 你所创建的每个类都是从父类,根类继承来的,有很多实例变量也会继承过来,这部分变量有时候会在你的程序内使用,它们不会自动释放内存,你需要调用父类的 dealloc方法来释放,然而在此之前你需要先把自己所写类中的变量内存先释放掉,否则就会造成你本类中的内存积压,造成泄漏