iOS中分類(Category)和類擴展(Extension)的區(qū)別

一、分類(Category):

分類(Category)它是表示一個指向分類的結(jié)構(gòu)體的指針。原則上它只能增加方法,不能增加成員(實例)變量。Category 是表示一個指向分類的結(jié)構(gòu)體的指針。

這個結(jié)構(gòu)體主要包含了分類定義的實例方法與類方法,其中instance_methods 列表是 objc_class 中方法列表的一個子集,而class_methods列表是元類方法列表的一個子集。
但在這個結(jié)構(gòu)體里面,沒有屬性列表!

二、類擴展(class extension)

extension被開發(fā)者稱之為擴展、延展、匿名分類。extension看起來很像一個匿名的category,但是extension和category幾乎完全是兩個東西。和category不同的是extension不但可以聲明方法,還可以聲明屬性、成員變量。extension一般用于聲明私有方法,私有屬性,私有成員變量。

extension在編譯期加載到類,它就是類的一部分,但是category則完全不一樣,它是在運行期加載到類。extension在編譯期和頭文件里的@interface以及實現(xiàn)文件里的@implement一起形成一個完整的類,它、extension伴隨類的產(chǎn)生而產(chǎn)生,亦隨之一起消亡

1、類擴展不僅可以增加方法,還可以增加實例變量(或者屬性)
2、類擴展所聲明的方法必須依托對應(yīng)類的實現(xiàn)部分來實現(xiàn)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容