#import和#include的区别以及#import死循环的解决方法

1. #import导入头文件,即:导入头文件中的内容到当前类

2. #import “”导自定义类,#import <>导入类库中的头文件。

3.功能类似C语言中的#include,但是可以避免头文件被重复导 入。(也即可以自动避免)

4. 容易出现循环导入头文件问题。

针对上面4的循环导入头文件而出现的死循环,OC中用@class + 类来解决

下面通过一个实例来说明:

分别定义两个类A和B,A中调用B,B中调用A

A.h中内容:

#import <Foundation/Foundation.h>#import "B.h"@interface A : NSObject{B * _b;}@end

=================================

A.m中的内容:

#import "A.h"@implementation A@end=================================

B.h中内容:

#import <Foundation/Foundation.h>

//#import "A.h"

//不会执行导入,只是声明了会用到A类,然后用到A类时会去A类中寻找

// #import和#include相比,#import可以避免重复导入

// #import 可能会造成循环编译,@class可以解决这个问题,@class A:只是将A声明成一个类

// 编译器不会导入A的内容

// 在使用@class的时候,一定要在.m中引入对应的头文件,例如:@class A;要在对应的.m文件

// 中写:#import “A.h”

@interface B : NSObject

{

A * _a;

}

@end

==================================

B.m中内容:

#import "B.h"

#import"A.h" //这里重点:这是在.m中导入的类,而死循环是因为都是在.h中导入,造成编译时

//的死循环

@implementationB

@end

==================================

,心有多大,舞台就有多大。

#import和#include的区别以及#import死循环的解决方法

相关文章:

你感兴趣的文章:

标签云: