首页 > 其他 > 详细

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

时间:2015-03-27 20:03:35      阅读:241      评论:0      收藏:0      [点我收藏+]

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"

@class A;// 不会执行导入,只是声明了会用到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中导入,造成编译时

                  //的死循环

@implementation


@end


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


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

原文:http://blog.csdn.net/guoxianzhuang/article/details/44679791

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!