2013-10-28 42 views
1

我是Objective-C的初學者。我在Xcode5中嘗試了基本的Objective-C程序。我創建了一個項目,例如Example1,我在其中編寫了一個包含兩個類的程序,在同一個.h文件中說Class1Class2。我通過 - File - > New File - > Objective-C Class(NSObject)創建了類 - Class1。創建此,在Objective-C中,通過編寫在相同的.h文件中創建一個類與創建一個新的文件爲Objective-c類有什麼區別?

@interface Class1 : NSObject 
{ 

} 

@end 

第二類class2我加入剛剛創建,

@interface Class2 : NSObject 
{ 

} 

@end 

現在,當我創建一個新文件(像我是如何做到Class1)創建另一個類,我得到另一組.h和.m文件。

我的疑問是,在同一個.h文件和不同的.h文件中使用不同的類有什麼區別?

+3

當你的一個班級規模增長時,你應該把它留在它自己的.h.m文件中,你會得到更清潔和可管理的代碼 – nio

回答

2

在ObjC是傳統的給每個類自己的.h和.m,並給這些文件與該類相同的名稱。在大多數情況下,這簡化了尋找代碼的方法。這不是必需的。你當然可以把你所有的類定義放在一個單獨的.h中;你可以把你的整個程序放在一個沒有用戶頭文件的.m文件中。但它是傳統的,通常是將它們分開的一個好習慣。

也有例外。有時候兩個類是非常相關的,並且放在一個頭裏。一個着名的例子是NSArrayNSMutableArray,它們都在NSArray.h中定義。蘋果推動NSCalendar.h,其中包括NSDateComponents。 (就個人而言,我可能會NSDateComponents分裂成自己的頭,但這是不同意見的一個例子。)

在非常大的系統(如可可),頭文件的數量可以是編譯時關注效率,所以合併很有可能一起使用的頭文件有一定的壓力。這在中等規模的項目中很重要。 (而且它在Cocoa中實際上並不重要,因爲Cocoa頭幾乎總是通過pch引入,現在通過模塊引入。)

作爲一個開始的程序員,我會在一致性方面犯錯。只需將每個類放入其自己的標題中,並匹配.m。在您探索更多現有框架時,您將更好地理解何時將類合併到單個標頭中可能是合適的。我幾乎從來沒有自己做過。

還有一種可能會遇到的合併。在.m文件中聲明一個接口是合法的。這對於創建專用助手類非常有用。我偶爾會這樣做,但我幾乎總是發現自己後悔並將私人課程分成自己的文件。當代碼不在一個一致的位置時,它太煩人了。但是,有時對於微小的私有數據類,有時可以直接在.m中定義它們。

0

通常每個類都有它自己的文件.h和.m,但是如果這對你沒有問題的話,沒有什麼能阻止你將所有的類寫入單個文件。

+1

你應該添加一些保留在1個文件中的優點/缺點。 – Wain

+0

是的,你能舉兩個例子嗎? – kpsaravan

0

如果您在同一個文件中聲明瞭兩個或多個接口。除了主界面之外的所有界面的方法和屬性都無法從外界訪問,因爲只能在.m文件中實現主界面。

相關問題