ObjectC----#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"

@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


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



注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com