OC中Category和Extension以及繼承的用法和區(qū)別

一.Category

分類就是對(duì)一個(gè)類的功能進(jìn)行擴(kuò)展,,讓這個(gè)類能夠適應(yīng)不不同情況的需求.在一般的實(shí)際開(kāi)發(fā)中,我們都會(huì)對(duì)系統(tǒng)的一些常用類進(jìn)行擴(kuò)展,比如,NSString,Button,Label等等,簡(jiǎn)單來(lái)說(shuō)類別是一種為現(xiàn)有的類添加新方法的方式。

利用Objective-C的動(dòng)態(tài)運(yùn)行時(shí)分配機(jī)制,Category提供了一種比繼承(inheritance)更為簡(jiǎn)潔的方法來(lái)對(duì)類進(jìn)行擴(kuò)展涣仿,無(wú)需創(chuàng)建對(duì)象類的子類就能為現(xiàn)有的類添加新方法踩叭,可以為任何已經(jīng)存在的類添加方法欣福,包括那些沒(méi)有源代碼的類.如系統(tǒng)框架類Foundation,UIKit等等蝗敢。

1.類別的作用

(1)可以將類的實(shí)現(xiàn)分散到多個(gè)不同的文件或者不同的框架中逗堵,方便代碼的管理叶眉。也可以對(duì)框架提供類的擴(kuò)展(沒(méi)有源碼慷妙,不能修改)僻焚。

(2)創(chuàng)建對(duì)私有方法的前向引用:如果其他類中的方法未實(shí)現(xiàn),在你訪問(wèn)其他類的私有方法時(shí)編譯器報(bào)錯(cuò)這時(shí)使用類別膝擂,在類別中聲明這些方法(不必提供方法實(shí)現(xiàn))虑啤,編譯器就不會(huì)再產(chǎn)生警告

(3)向?qū)ο筇砑臃钦絽f(xié)議:創(chuàng)建一個(gè)NSObject的類別稱為“創(chuàng)建一個(gè)非正式協(xié)議”,因?yàn)榭梢宰鳛槿魏晤惖奈袑?duì)象使用架馋。

2.局限性

(1)分類只能增加方法,不能增加成員變量,但是可以通過(guò)運(yùn)行時(shí)來(lái)給分類添加屬性,那么成員變量和屬性有什么區(qū)別呢?

成員變量和屬性的區(qū)別:

(2)如果分類和原來(lái)類出現(xiàn)同名的方法, 優(yōu)先調(diào)用分類中的方法,原來(lái)類中的方法會(huì)被忽略,方法調(diào)用的優(yōu)先級(jí)(從高到低) 分類(最后參與編譯的分類優(yōu)先),只要有分類就優(yōu)先調(diào)用分類,不考慮與主類的編譯順序

3.利用運(yùn)行時(shí)來(lái)為分類添加屬性

用來(lái)標(biāo)記是哪一個(gè)屬性的key常見(jiàn)有三種寫法狞山,但代碼效果是一樣的,如下:

關(guān)聯(lián)策略是個(gè)枚舉值叉寂,解釋如下:

二.繼承

多個(gè)類具有相同的實(shí)例變量和方法時(shí)萍启,考慮用繼承。即子類可以繼承父類的相同特性屏鳍。如animal具有年齡和體重兩個(gè)屬性勘纯,dog也具有年齡和體重兩 個(gè)屬性,dog可以繼承animal的這兩個(gè)屬性钓瞭,即為繼承驳遵。

三.Extension:類擴(kuò)展

Extension是Category的一個(gè)特例

作用:為一個(gè)類增加私有方法,屬性或成員變量,也就是說(shuō)只能這些只能在本文件中被使用其名字為匿名(為空),并且新添加的方法一定要予以實(shí)現(xiàn)是复。(Category沒(méi)有這個(gè)限制)

Extension的實(shí)現(xiàn):

Category和Extension區(qū)別:

文/WGP_CN(簡(jiǎn)書(shū)作者)

原文鏈接:http://www.reibang.com/p/935e966c0c08

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末产捞,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子洼畅,更是在濱河造成了極大的恐慌佳鳖,老刑警劉巖霍殴,帶你破解...
    沈念sama閱讀 212,454評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異系吩,居然都是意外死亡来庭,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門穿挨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)月弛,“玉大人,你說(shuō)我怎么就攤上這事科盛∶毖茫” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,921評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵贞绵,是天一觀的道長(zhǎng)厉萝。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么谴垫? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,648評(píng)論 1 284
  • 正文 為了忘掉前任章母,我火速辦了婚禮,結(jié)果婚禮上翩剪,老公的妹妹穿的比我還像新娘乳怎。我一直安慰自己,他們只是感情好前弯,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,770評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布蚪缀。 她就那樣靜靜地躺著,像睡著了一般博杖。 火紅的嫁衣襯著肌膚如雪椿胯。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,950評(píng)論 1 291
  • 那天剃根,我揣著相機(jī)與錄音哩盲,去河邊找鬼。 笑死狈醉,一個(gè)胖子當(dāng)著我的面吹牛廉油,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播苗傅,決...
    沈念sama閱讀 39,090評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼抒线,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了渣慕?” 一聲冷哼從身側(cè)響起嘶炭,我...
    開(kāi)封第一講書(shū)人閱讀 37,817評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎逊桦,沒(méi)想到半個(gè)月后眨猎,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,275評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡强经,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,592評(píng)論 2 327
  • 正文 我和宋清朗相戀三年睡陪,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片匿情。...
    茶點(diǎn)故事閱讀 38,724評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡兰迫,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出炬称,到底是詐尸還是另有隱情汁果,我是刑警寧澤,帶...
    沈念sama閱讀 34,409評(píng)論 4 333
  • 正文 年R本政府宣布玲躯,位于F島的核電站须鼎,受9級(jí)特大地震影響鲸伴,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜晋控,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,052評(píng)論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望姓赤。 院中可真熱鬧赡译,春花似錦、人聲如沸不铆。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,815評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)誓斥。三九已至只洒,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間劳坑,已是汗流浹背毕谴。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,043評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留距芬,地道東北人涝开。 一個(gè)月前我還...
    沈念sama閱讀 46,503評(píng)論 2 361
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像框仔,于是被迫代替她去往敵國(guó)和親舀武。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,627評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容