使用向前聲明隱藏類別細(xì)節(jié)
@class className
將引入頭文件的時機盡量延后, 只在確有需要時才引入,這樣就可以減少類的使用者所需引入的頭文件數(shù)量
如果在各自頭文件中引入對方的頭文件, 則會導(dǎo)致"循環(huán)引用"(chicken-and-egg situation). 使用#import而非#include指令雖然不會導(dǎo)致死循環(huán), 但卻這意味著兩個類里有一個無法被正確編譯.
// chicken-and-egg situation
#import "ClassB.h"
@interface ClassA : NSObject
@property (nonatomic,weak) ClassB *classB;
@end
#import "ClassA.h"
@interface ClassB : NSObject
@end
在進行編譯時,會報出以下錯誤:
!Property with 'weak' attribute must be of object type
!Unknown type name 'ClassB'