2011-07-10 136 views
0

我從Apple的文檔中發現了以下代碼片段。初學者的Objective-C語法問題

界面相當簡單:

#import <Foundation/Foundation.h> 
#import "ApplicationCell.h" 

@interface CompositeSubviewBasedApplicationCell : ApplicationCell { 
     UIView *cellContentView; 
} 
@end 

實施:

#import "CompositeSubviewBasedApplicationCell.h" 

@interface CompositeSubviewBasedApplicationCellContentView : UIView { 
    ApplicationCell *_cell; 
    BOOL _highlighted; 
} 

@end 

@implementation CompositeSubviewBasedApplicationCellContentView 
//not important, abbreviated... 
@end 

我不能完全弄清楚爲什麼在執行文件中的另一個@interface聲明。我認爲這是一種聲明私有實例變量的方法。我對嗎?

而且由於接口已經說過CompositeSubviewBasedApplicationCell延伸了ApplicationCellCompositeSubviewBasedApplicationCellContentView : UIView是什麼意思?

在此先感謝。

回答

4

這是另一個類的定義。在大多數情況下,這將在一個單獨的文件中,但也可以在一個文件中定義多個類,特別是如果它們密切相關。

CompositeSubviewBasedApplicationCellContentView可能不會被任何類使用,除了CompositeSubviewBasedApplicationCell,所以它不需要有自己的頭文件。

+0

哦,我的。我一定很累。我沒有發現它是一個不同的定義。完全錯過了名稱末尾的「ContentView」。感謝您指出。 – Azu

1

CompositeSubviewBasedApplicationCellCompositeSubviewBasedApplicationCellContentView是兩個不同的類別。

我不能完全弄清楚爲什麼在實現文件中有另一個@interface聲明。我認爲這是一種聲明私有實例變量的方法。我對嗎?

是的,這是讓班級完全私密化的一種方法。如果有人希望它是部分私人的,他們可以將其擴展到執行文件中,如下所示:

@interface CompositeSubviewBasedApplicationCell() 

@end