2013-05-28 75 views

回答

26

這是一個ObjC型的向前聲明:

@class MyClass; 

而且這是ObjC協議的前向聲明:

@protocol AVAudioSessionDelegate; 

對於那些很好奇的人,爲什麼這很有用:前向聲明可以用來顯着減少依賴關係並顯着縮短構建時間,因爲它允許您避免使用頭部和/或整個框架(然後#import其他框架)。當不使用前向聲明時,許多不必要的頭文件對程序的其他部分是可見的 - 更改一個頭文件可能導致許多文件被重新編譯,編譯和鏈接時間將會增加。因爲ObjC類型總是作爲指針處理(在我們的抽象層次上),所以在大多數情況下,前向聲明就足夠了。然後,您可以在您的@implementation或類延續聲明你的實例變量,然後#import可以去在*.m文件。另一個原因是避免循環依賴。

+1

這實際上並沒有回答我應該如何向前聲明@interface對象。使用我給出的例子將會有所幫助。 – aerlfredith

+1

對不起,你的答案DID解決了我的問題我只是沒有完全理解你的意思。 @interface對象也用@class MyClass預先聲明;我期待更像@interface Myclass ;.對不起。謝謝 – aerlfredith

+0

@aerlfredith不客氣:) – justin