OC03 避免互相引入 方法理解5

来源:互联网 发布:java判断全角字符 编辑:程序博客网 时间:2024/06/11 19:04

//  Man.h

#import <Foundation/Foundation.h>

//#import "Woman.h"


@class Woman;

@interface Man : NSObject

{

   Woman *_woman;

}


@end


//  Man.m

#import "Man.h"

#import "Woman.h"


@implementation Man


@end



//  Woman.h

#import <Foundation/Foundation.h>

#import "Man.h"


@interface Woman : NSObject

{

   Man *_man;

}

@end


//  Woman.m

#import "Woman.h"


@implementation Woman


@end



//  main.m

#import <Foundation/Foundation.h>


int main(int argc,const char * argv[]) {


    

#pragma mark -类的组合

    //将多个类组合在另一个类中,生成一个新类。也就是将其他类的对象作为新类的实例变量

    

#pragma mark importinclude

    // #includeC中的导入头文件的指令, #importOC中导入头文件的指令,但是#improt可以自动检测是否产生了循环导入,如果有,则自动断开其中一条导入链路,而include本身并不具备这种检测、规避功能。

    

    // @class@class可以解决循环引入后,断开某条链路的情况。

    /* 如何解决?

     

     在声明文件中,使用@class将类名声明出来,并不导入该类。

     在实现文件中,使用#import导入类的头文件,这样not only避免了循环引入,but also 互相把对方的类声明为自己的实例。

     */

    

    

    

   return 0;

}


0 0
原创粉丝点击