2012-08-13 32 views
0

您好,我正在通過網絡上的示例代碼學習IOS編程。我發現這段代碼有些奇怪,因爲它們已經有了h.file,但是它們在m.file中也有h.file代碼。在.m文件中構造頭文件?

@interface Manager : NSObject { 
} 

+(void) goMenu; 

這是h。文件

#import "Manager.h" 

@interface Manager() 
+(void) go 
+(void) wrap 
@end 


@implementation Manager 
.... 

並且這是m.file的開頭。

對於像我這樣的初學者來說,這種情況讓我感到非常困惑。請有人解釋我發生了什麼?

回答

2

@interface Manager()在執行文件中被稱爲class extension

這通常用於添加開發人員希望保持私有的方法,屬性等。

0

.m文件的@interface Manager()主要是用來聲明私有方法和屬性。

在.h中聲明的每個東西都是(大部分)公共方法和屬性。但有時候你想擁有不公開的方法和屬性。

要知道,與Objective-C的你仍然可以調用這些方法和屬性,編譯器會給出一個警告有關調用這樣的方法可能由於呼叫NOG工作可能不responde的方法。

0

.h文件中的所有函數也可能對其他類感興趣。這些是每個人都能看到的公共界面。其他類文件可以#導入.h文件,從而瞭解所有公共功能。

另一方面.m文件中的功能是專用接口。直到最近,所有方法都必須在使用之前進行聲明(也可以方便地快速瀏覽)。通過使用這個構造,開發人員在.m文件開頭聲明瞭方法的存在,以便可以在整個文件中使用它們。由於.m文件不會被導入/包含在其他文件中,因此它們本身不是外部可見的。

請注意,這種機制不是由任何種類的安全機制強制執行的,並且如果您選擇的話可以被覆蓋。

0

界面中你.m文件被視爲私人和引用您在其他類Manager類時未顯示。

但是,我相信你可以從其他類中調用它們,只要你不在(和)之間添加「Private」即可。 (使其成爲@interface Manager (Private))...但您會收到警告,說明班級經理可能無法實施wrap這種方法。

1

你在.m文件中看到的是類擴展名。你可以閱讀更多關於類擴展和類別here

0

這是一個類擴展。它可用於具有私有方法,實例also.Here是link,給你一點點的更多細節。