新手提問,看別人的代碼是這樣寫的:
@interface FirstViewController() -(void)timerOnActive; -(void)getDataFromCD; @end @implementation FirstViewController @synthesize userID; @synthesize timer;
上麵的代碼是寫在.m文件裏的,我的問題是為什麼不把
@interface FirstViewController() -(void)timerOnActive; -(void)getDataFromCD; @end
寫在.h文件的@interface中? FirstViewController() 後麵的那個括號是空的,需要填什麼嗎?這樣寫是為了補充嗎?
這裡的@interface FirstViewController() 實際上是一個class extension,就像一個匿名的categories,它所聲明的方法必須要在相應類別的主要@implementation程式碼區塊被實現,一個類別可能有一個公開聲明的API ,同時有額外的方法聲明為僅由類別或框架類別私有使用。你可以在上面提到的一個私有的頭檔或實作檔案裡用一個category(或多於一個的category)來宣告這樣的方法。這樣是可行的,但是編譯器並不能確認所有被宣告的方法都被實作了。
寫在m檔案中的方法外部的類別沒法調用,這個被當成了一個私有的方法在本類別內調用。對外是隱藏的。