標籤:blog http io ar os 使用 sp java 檔案
關於ios object-c 類別-分類 category 的靜態方法與私人變數,協議 protocol2014-02-18 19:57 315人閱讀 評論(0) 收藏 舉報1.category,覆蓋原類的方法,即使不引用該category標頭檔,也能覆蓋,respondsToSelector:方法也能響應。
2.category,不可以有私人變數,但是可以有@property的聲明,property的聲明只是聲明了該類的set,get方法(需要引用該category的標頭檔),但是category實現的m檔案裡面根本就沒有產生這兩個方法,所以你使用self.xxx時,會掛掉,錯誤提示:沒有get/set方法。
你在category的m檔案裡面@synthesize 也無法聲明,
也就是說,有聲明,無實現。
3.category的靜態方法,可以使用,
即使不聲明,而是直接去實現,
調用的時候(無需引用category的h檔案)雖然會有警告,但依然會執行。
調用的時候,只能用類名,用對象的話,會掛掉。
關於協議@Protocol
協議不能執行個體化,所以不能有執行個體變數(或者叫私人變數),但是可以有@property聲明,這個聲明,只是告訴別人這個協議裡面有set,get方法而已。
注意:盡量不要在@Protocol用@property聲明,很容易出毛病,特別是輸出屬性時。
如果要使用@property的話,可以參考 UITextInputTraits,這個官方協議裡面都是@property
協議時可以有靜態函數的。這個和java裡面的介面有點衝突,介面時不可以有靜態函數的。
協議裡面不能定義static常量,定義時沒錯,一旦引用該檔案,但編譯報錯
非正式協議就時一個分類,category,用於根類的category。
例如@interface NSObject (類別名稱)
但是在object-2.0中,已經用@optional代替了非正式協議
關於ios object-c 類別-分類 category 的靜態方法與私人變數,協議 protocol