【Objective-C】OC中的Dealloc方法详解
2014-02-11 08:47
344 查看
今天来学习一下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; @end2:父类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; @end4:子类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]; } @end5:测试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方法详解
- [Objective-C]OC中的Dealloc方法详解
- OC中的Dealloc方法详解
- Objective-C内存管理详解——dealloc方法
- Objective-C 的属性与合成方法使用详解
- Objective-C学习篇第十一弹:load和initialize方法详解
- 【IOS 开发学习总结-OC-12】★objective-c面向对象之——合成存取方法与点语法
- 【Objective-C】OC中字符串(NSString)的基本概念和常用处理方法
- 【Objective-C】OC中键值编码(KVC)的概念和使用方法
- Objective-c学习笔记(三)oc 多输入参数的方法及协议的使用及变量
- 【Objective-C】OC中自定义对象的归档基本概念和使用方法(实现NSCoding协议)
- Objective-c:集合类型遍历方法详解
- objective-c 类和对象中静态数据成员和静态成员函数(类方法)详解
- Objective-C 利用OC的消息机制,使用Method Swizzling进行方法修改
- Objective-C中数组对象排序的方法(OC中NSString的常用API的基础应用2)
- 【Objective-C】OC中字符串(NSString)的基本概念和常用处理方法
- iOS里面Objective-C(OC)方法的懒加载
- OC方法详解
- 【学习ios之路:Objective-C】OC中常用的系统排序方法
- Objective-C_OC中的方法