初学objective c语言4 dealloc
#import <foundation/foudation.h> #import "Init.h" #import "Eyes.h" int main(int argc,const char *argv[])//main函数 { Init *fp=[Init alloc];//创建对象 [fp col]; //调用方法 Eyes*p=[Eyes alloc]; //创建对象 [p release]; //手动计数retaincount-1 P被释放是时系统也会调用dealloc函数 [fp release]; //手动计数retaincount-1 return 0; }
#import <foundation/foudation.h> #import "Eyes.h" @interface Init.h : NSObject //类 { @protected float _height; //类成员变量 Eyes *_eyes; //定义一个Eyes类型的指针 } -(void)dealloc; //类方法 -(void)colour; @end
@Implementation Init //类方法的实现,一般只能在.m文件里 -(void)dealloc { NSLog(@"%d %s",__LINE__,__func__); [_eyes release] //当_eyes 被回收时,系统会调用dealloc函数,就会打印一次line func [super dealloc]; } -(void)colour { _eyes=[Eyes new]; _eyes->colour='r'; } @end
#import <foundation/foundation.h> @interface Eyes: NSObject //创建一个类 { @ public char colour; } -(void)dealloc; //类方法 @end
#import "Eyes.h" @inpiementation Eyes -(void)dealloc //类方法的实现 { @NSLog(@"%d",__LINE__);
[super dealloc]; } @end
申请的内存,在使用玩之后,必须释放该指针指向的那内存
一般 要遵循时谁申请谁释放;
例如:现在创建了3个文件,Init 、Bone、Eyes.
Init的父类是nsobject ,bone的父类是Init,Eyes的父类是nsobject.
在bone里面申请的对象被释放时,系统会自动调用dealloc方法,[super dealloc]返回一个调用dealloc的信号;
在Init里面申请一个Eyes内存大小的空间,当接受到子类Bone的信号时,在Init里面的dealloc方法里面,release一次Eyes内存空间;
总结:整个过程相当与一个内存的回收.