【Objective-C】OC中的Dealloc方法详解

发布时间:2020-07-31 12:57:25 作者:jiangqq900826
来源:网络 阅读:488

今天来学习一下Dealloc方法的使用。

它的作用是,当对象的引用计数为0,系统会自动调用dealloc方法,回收内存。它的一般写法:

1:-(void)dealloc{

    [super dealloc]; }
2:-(void)dealloc{ 
    NSLog(@"laptop dead");     [_cpu release];     [super dealloc]; }
(一):为什么需要调用父类的dealloc方法?
     子类的某些对象实例是继承自父类的。因此,我们需要调用父类的dealloc方法,来释放父类
拥有的这些对象。
(二):调用的顺序
     一般说调用的顺序是,当子类的对象释放完时,然后再释放父类的所拥有的实例。这一点与调用初始化方法,
正好相反
下面使用一个例子来演示一下:
1:父类Vehicle.h
#import <Foundation/Foundation.h>  @interface Vehicle : NSObject {     @private     NSString *_name; } -(id)initWithName:(NSString *)name; @end
2:父类Vehicle.m
#import "Vehicle.h"
@implementation Vehicle
-(id)initWithName:(NSString *)name{     self=[super init];     if(self){         _name=[name copy];     }     return self; } -(void)dealloc{     NSLog(@"vehicle dead");     [_name release];     [super dealloc]; } @end
3:子类Car.h
#import <Foundation/Foundation.h> #import "Vehicle.h" @class Engine; @interface Car : Vehicle {     Engine *_engine; } -(void)setEngine:(Engine *)engine; @end 
4:子类Car.m
#import "Car.h"
@implementation Car
-(void)setEngine:(Engine *)engine{     if(_engine!=engine){         [_engine release];         _engine=[engine retain];     } }  -(Engine *)engint{     return  _engine; } -(void)dealloc{     NSLog(@"Car dead");     [_engine release];     [super dealloc]; } @end 
5:测试main.m代码
#import <Foundation/Foundation.h> #import "Engine.h" #import "Car.h" int main(int argc, const char * argv[]) {      @autoreleasepool {         NSString *name=[[NSString alloc]initWithFormat:@"audi"];         Car *car=[[Car alloc]initWithName:name];         [name release];                  Engine *v6=[[Engine alloc]init];         [car setEngine:v6];         [v6 release];         //do something         [car release];     }     return 0; }
运行截图
【Objective-C】OC中的Dealloc方法详解 
推荐阅读:
  1. 【Objective-C】OC中单例设计模式讲解
  2. 【Objective-C】OC中协议(Protocol)的基本概念和用法

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

ios 对象 objective-c

上一篇:函数式编程

下一篇: hadoop的端口简介

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》