初学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内存空间;

总结:整个过程相当与一个内存的回收.

posted @ 2014-01-14 22:08  @ios初学者@  阅读(199)  评论(0编辑  收藏  举报