include,import,@class的区别

1.#include与#import功能一样,都是导入头文件

2.区别是#include是单纯导入头文件,如果重复导入头文件,头文件就被导入多分

3.#import在导入头文件之前会检查之前是否导入过,如果导入过,就不在编译。防止重复编译

4.#import只能在OC中使用,#include既能在OC中使用又能在C中使用

5.@class防止循环导入,告诉下面有这个类。

下面用例子来说明一下:有两个类,一个Boy,一个Girl

Girl类

#import <Foundation/Foundation.h>

@class Boy;

//下面有Boy这个类型

//如果发生循环引用问题,用@Class解决.

//@Class是使用在.h文件中

//如果使用的Class就要在.m中#import

@interface Girl : NSObject

{

//Boy类型

Boy *_boyFriend;

}

@end

#import "Girl.h"

#import "Boy.h"

@implementation Girl

@end

Boy类:

#import <Foundation/Foundation.h>

@class Girl;

//@class告诉下面有Gril这个类型

@interface Boy : NSObject

{

Girl *_girlFriend;

}

@end

#import "Boy.h"

#import "Girl.h"

@implementation Boy

@end

上一篇:objectARX 关于MFC类向导 无法向此非CCmdTarget派生类添加任何命令 的解决方式


下一篇:php基础30:正则匹配-量词