category:能夠爲系統類進行擴展,能夠不繼承系統類,直接給系統類添加系統方法。框架
#import繼承
@interface NSObject (Category)項目管理
- (void)myMethod;開發
@end源碼
這是一個最簡單的Category,做用於NSObject類,給NSObject添加了一個方法。編譯
注意事項class
1:類別是類的擴展,只能夠聲明方法,不能夠聲明變量。而且,類別的方法優先級較高,可覆蓋原類方法。import
2:類別的方法中,不能夠調用super方法。--類別的侷限 版本管理
3:category 方法可能會覆蓋於同一個類class 的其它 category 中的方法。但也可能被覆蓋,由於不法預知他們的加載優先順序,出現這種狀況一般會在編譯時出錯。若是在一個開發的SDK中使用了類別, 就最好保證類別名不一樣於使用者的類別名, 以及類別方法也不一樣於使用者的類別方法名, 一般經過加前綴來作到。變量
使用類別:
1。對框架提供類的擴展(沒有源碼,不能修改)。
2。 不想生成一個新的子類的狀況下,好比對 NSArray 的擴展。
3。 方便作項目管理,能夠將一份源碼在多個地方共享或者作方法版本管理、多人協做開發、用本地版本替換公共版本實現。