iOS Class Extension 類擴充套件

2021-09-09 06:58:30 字數 914 閱讀 2638

class extension的使用看起來很像乙個匿名的category,所以class extension也被開發者稱之為擴充套件、延展、匿名分類。

但是class extension和category幾乎完全是兩個東西。

class extension不但可以宣告方法,還可以宣告屬性、成員變數,而category無法宣告成員變數。

category擁有自己的.**件和.m檔案,但class extension主要存放在主類的.m檔案中,用於隱藏私有屬性和方法,當然也可以存放在.h中,用於公共屬性和方法分類。

class extension在編譯階段就會將定義的成員變數、屬性、方法等直接合入主類,而 category 在程式啟動 runtime loading 時才會將屬性和方法合入主類。

所以class extension其實就是主類不可分割的一部分,你要新增class extension就必須有主類的源**。

class extension主要用於宣告私有方法,私有屬性,私有成員變數。

在class extension宣告私有屬性時,會自動生成_成員變數、setter和getter方法。

而category為類新增屬性,需要手動新增該屬性的setter和getter方法。

我相信以下的寫法都不陌生,或者熟悉到不能再熟悉了。 

//class extension

@inte***ce view () //括號中可以寫名字,用於分類管理extension

//私有屬性

@property(nonatomic, strong) uibutton *button;

@property(nonatomic, assign) bool changecolor;

//私有方法

- (void)print;

@end

SQL SERVER Buffer Pool擴充套件

buffer pool擴充套件是buffer pool 和非易失的ssd硬碟做連線。以ssd硬碟的特點來提高隨機讀效能。在buffer pool 擴充套件之前,sql server 從磁碟中讀入資料,並且存放在buffer pool中以供讀取和修改,修改完之後髒資料還是放在buffer pool中,...

dilated convolutions 擴張卷積

最近在閱讀 context encoding for semantic segmentation 中看到應用了dilated convolutions。擴張卷積與普通的卷積相比,除了卷積核的大小以外,還有乙個擴張率 dilation rate 引數,主要用來表示擴張的大小。擴張卷積與普通卷積的相同點...

關於 qtpropertybrowser 擴充套件問題

qtpropertybrowser 是乙個基於qt開發的屬性展示控制項,功能強大。在windows平台,使用vc編譯工具,如果將qtpropertybrowser 此庫編譯成dll時,在程式中直接使用原始類沒有問題,但如果自定義派生類且使用到訊號槽時就會遇到乙個編譯問題,這個問題歸根結底在於有沒有使...