類目(category):為現有類新增新的方法,但是不能新增例項變數。通過類目加入的方法和原始類的方法沒有區別,同樣可以被繼承。類目可以覆寫原始類中得方法,但是一旦覆寫後,原始類中得方法將不可再被呼叫。
@inte***ce nsmutablearray (sort) //
為nsmutablearray
類新增sort
方法,sort
就是類目名,做到見名知意
-(void)invert;//方法
@end
實現部分
#import "nsmutablearray+sort.h"
@implementation nsmutablearray (sort)
-(void)invert
} @end
在主函式裡邊可以直接呼叫上邊的
invert方法
nsmutablearray * arr =[[nsmutablearray alloc]initwithobjects:@"12",@"4",@"89",@"88",@"36",nil];
[arr invert];
nslog(@"%@",arr);
列印結果:
2012-08-1311:12:03.324
類目[980:14503] (
36,
88,
89,
4, 12
)類目(category)的使用場景:
1、 類中包含了很多個方法實現,而這些方法需要不同團隊的成員來實現。
2、 當你在使用基礎類庫中得類時,你不想繼承這些類而只想新增一些方法時。
類目(category)使用時的注意事項
1、類目中可以有property屬性,但是必須手動新增setter 和getter方法。
2、類目可以訪問原始類的例項變數,但不能新增例項變數,類目中沒有位置容納例項變數,如果想要新增變數,可以通過繼承子類來實現。
3、類目覆寫原始類的方法後,原始類的方法不能被呼叫。如果想要覆寫原始類的方法,可以通過繼承子類來實現。
4、類目的實現檔案中得例項方法只要你不去呼叫它,就可以不用實現所有宣告的所有方法。
延展(extension):延展的作用就是定義自己的私有方法。他可以看成是一種匿名的類目,有時候需要一些知識自己看見的私有方法,定義在.m檔案裡面。匿名的延展可以定義屬性。
#import "student.h"
@inte***cestudent (extension)//
為student
類建立乙個私有的方法
-(void)text;
@end
@implementationstudent -(void)hello;
-(void)text
@end
外界 [student hello]的時候就會列印出「你好」。但是在外界不能呼叫text方法,[student text]是不對的。只能在.m檔案裡邊通過self來呼叫私有方法text。隱藏了內部的實現。
延展和類目
延展和類目 相同點 類目和延展的作用都是為了擴充套件乙個類。一 類目的定義和作用 類目也叫分類,英文category,在沒有原類.m檔案的基礎上,給該類新增方法。比如,nsstring類原本沒有hellostring方法,我們又沒有nsstring類的原 那我們想給nsstring類新增乙個hell...
類目 延展 協議
1.類目 類目就是為已存在的類新增新的方法。但是不能新增例項變數。比如系統的類,我們看不到他的.m檔案,所以沒有辦法用直接新增方法的方式去實現。inte ce nsmutablearray sort 為nsmutablearray類新增sort方法,sort就是類目名,做到見名知意 void inv...
延展 協議 類目
一.延展 1.延展以 inte ce開頭,然後寫當前延展的類名,類名後加乙個 到 end結束 2.一般延展會寫在自己寫的.m檔案中,把一些不想讓外部呼叫的屬性放在延展裡,這樣這條屬性只能夠在類的內部使用,外部使用不了,盡最大可能保護當前類的安全 3.類目一般是給看不見.m的檔案進行擴充套件,延展一般...