2011-12-21 66 views

回答

51

「Interface Builder」。

在Xcode 4之前,接口文件(XIB和NIB)在名爲Interface Builder的單獨程序中編輯,因此是前綴。

IBAction定義爲voidIBOutlet爲空。它們只是解析文件以使它們可用於連接的Interface Builder的線索。

我想補充參考,了AppKit/NSNibDeclarations.h裏面你會發現這些:

#ifndef IBOutlet 
#define IBOutlet 
#endif 

#ifndef IBAction 
#define IBAction void 
#endif 

所以,實際上,這樣的代碼:

@interface ... 
{ 
    IBOutlet NSTextField *label; 
} 
- (IBAction)buttonPressed:(id)sender; 
@end 

將轉變爲:

@interface ... 
{ 
    NSTextField *label; 
} 
- (void)buttonPressed:(id)sender; 
@end 

通過預處理器,甚至在編譯器看到它之前。這些關鍵字只是作爲Interface Builder的線索。

+3

只是加起來,'IBAction'是'void'。這是一種標記事物,以便Interface Builder可以查看哪些方法代碼公開了與按鈕和其他控件的連接。不確定'IBOutlet',但我確定它與'IBAction'類似,因此Interface Builder會看到它可以連接到代碼的控件。 – Eimantas 2011-12-21 15:19:15

+1

該工具仍稱爲Interface Builder;它不再作爲一個單獨的應用程序存在。恥辱,因爲我真的很喜歡這個圖標。 – BoltClock 2011-12-21 15:19:38

+0

@Eimantas我一直在編輯答案,在寫這些評論的同時做一個筆記:-)謝謝指向它 – sidyll 2011-12-21 15:21:50

4

當您通過接口構建器連接對象時,IB代表接口構建器。

0

IBAction和IBOutlet是接口生成器常量 IBOutlet:Controller類可以使用稱爲IBOutlet的特殊常量引用nib文件中的對象。

IBActions:可以將nib文件中的接口對象設置爲使用IBAction作爲方法的返回類型來觸發控制器類中的特定方法。