類目和延展

2021-07-02 12:06:09 字數 1522 閱讀 9610

類目(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的檔案進行擴充套件,延展一般...