類擴充套件與分類

2021-07-11 18:31:03 字數 1517 閱讀 2046

類擴充套件與分類

建立日期:2016.5.12

類擴充套件可以新增方法與屬性

下面為uiview的類擴充套件

@inte***ce

uiview(uiviewhierarchy)

@property(nullable, nonatomic,readonly) uiview *superview;

@property(nonatomic,readonly,copy) nsarray

<__kindof uiview *> *subviews;

@property(nullable, nonatomic,readonly) uiwindow *window;

- (void)removefromsuperview;

- (void)insertsubview:(uiview *)view atindex:(nsinteger)index;

- (void)exchangesubviewatindex:(nsinteger)index1 withsubviewatindex:(nsinteger)index2;

但類擴充套件宣告的方法一定要在@implementation實現

分類只能新增方法

在xcode中可以通過 new file… ->objective-c file中建立分類或類擴充套件

建立出的分類:

nsstring+name.h

nsstring+name.m

建立出的類擴充套件:

nsstring_name.h

由此可以看出來分類與擴充套件的區別

類擴充套件預設只有.h檔案,一般用於給類中新增屬性

而分類一般用於給類新增方法

類擴充套件常見用法一

這種寫法可以在.h中宣告多個@inte***ce將類的功能模組化

#import 

@inte***ce

xmeiziviewcontroller : uiviewcontroller

@property (weak, nonatomic) iboutlet uicollectionview *collectionview;

@end

@inte***ce

xmeiziviewcontroller (ex)

@property (nonatomic,strong)nsstring *name;

@end

2.類擴充套件常見用法二

在.m檔案中新增匿名類擴充套件

類擴充套件中可以申明類的私有屬性及方法

@inte***ce

xmeiziviewcontroller ()

@end

@implementation

xmeiziviewcontroller

@end

分類和類擴充套件

分類 category 和 類擴充套件 extension 分類 category 1 給已經存在的類增加方法 可以不實現 不能增加成員變數 可以通過runtime來給分類新增屬性 2 分類可以訪問原來類中的成員變數 3 如果分類和原來的類出現同名的方法,優先呼叫分類中的方法 優先順序是 分類 最後...

分類與擴充套件

類擴充套件 extension 是category的乙個特例,有時候也被稱為匿名分類。他的作用是為乙個類新增一些私有的成員變數和方法。其實我們經常使用到類擴充套件,當我們建立乙個新的控制器的時候 會出現下面的 段 inte ce stwebviewcontroller 這就是類擴充套件的寫法 pro...

iOS 類擴充套件與分類的區別

類擴充套件 class extension也有人稱為匿名分類 能為某個類附加額外的屬性,成員變數,方法宣告 一般的類擴充套件寫到.m檔案中 一般的私有屬性寫到類擴充套件 inte ce mitchell 屬性 方法 end分類的小括號中必須有名字 inte ce 類名 分類名字 方法宣告 end i...