談?wù)凮bjective-C中分類和類擴(kuò)展

1.分類Category

  • 給原有類添加方法,類別中的方法沒被實(shí)現(xiàn)也不會有任何警告管怠,因?yàn)轭悇e是在運(yùn)行時添加到類中淆衷。
    原則不能添加屬性或者成員變量,實(shí)際上可以通過runtime方式添加屬性或者成員變量
  • 分類中可以寫@property, 但不會生成setter/getter方法, 也不會生成實(shí)現(xiàn)以及私有的成員變量(編譯時會報警告)渤弛。
    可以通過runtime手動添加setter/getter方法
  • 分類中可以訪問原有類.h中的屬性
  • 如果分類中有和原有類同名的方法祝拯,優(yōu)先級是分類>原有類>原有類的父類

建立兩個文件:Person+category.h和Person+category.m

#import "Person.h"
@interface Person (category)
@property (nonatomic, strong) NSString *name;
(void)categoryMethod;
@end

#import <objc/runtime.h>
@implementation Person (category)
(void)categoryMethod{
    //code}

//通過runtime手動添加setter/getter方法

- (void)setName:(NSString *)name{
     objc_setAssociatedObject(self, @selector(name), name, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
- (NSString *)name{
    return objc_getAssociatedObject(self, @selector(name));
}

注意:在原有類里使用下劃線_訪問分類中的屬性是訪問不到的,只能使用self訪問

2.類擴(kuò)展Extension

類擴(kuò)展Extension與分類相比少了實(shí)現(xiàn)文件她肯,我們稱之為匿名分類

  • 為原有類添加新的屬性(成員變量)和方法
  • 類擴(kuò)展的私有方法必須實(shí)現(xiàn)佳头,否則會發(fā)生警告,因?yàn)轭悢U(kuò)展是在編譯階段被添加到類中
  • 類擴(kuò)展的私有方法在原有類的.m中實(shí)現(xiàn)
  • 定義在 .m 文件中的類擴(kuò)展方法為私有的晴氨,定義在 .h 文件中的類擴(kuò)展方法為公有的

建立一個文件:Person_extension

#import "Person.h"

@interface Person ()
//私有屬性
@property (nonatomic, strong) NSString *cardId;
//私有方法
- (void)extensionMethod;

@end


在Person.m中

實(shí)現(xiàn)類擴(kuò)展的方法
-(void)extensionMethod{
    //code
}

也可以這樣創(chuàng)建一個Extension,在.m文件中

@interface Person ()
- (void)extensionMethod2;
@end

這也是一個類擴(kuò)展

溫故而知新康嘉,常常寫下筆記也會有意想不到的作用。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末瑞筐,一起剝皮案震驚了整個濱河市凄鼻,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌聚假,老刑警劉巖块蚌,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異膘格,居然都是意外死亡峭范,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進(jìn)店門瘪贱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來纱控,“玉大人,你說我怎么就攤上這事菜秦√鸷Γ” “怎么了?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵球昨,是天一觀的道長尔店。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么嚣州? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任鲫售,我火速辦了婚禮,結(jié)果婚禮上该肴,老公的妹妹穿的比我還像新娘情竹。我一直安慰自己,他們只是感情好匀哄,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布秦效。 她就那樣靜靜地躺著,像睡著了一般涎嚼。 火紅的嫁衣襯著肌膚如雪棉安。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天铸抑,我揣著相機(jī)與錄音,去河邊找鬼衷模。 笑死鹊汛,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的阱冶。 我是一名探鬼主播刁憋,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼木蹬!你這毒婦竟也來了至耻?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤镊叁,失蹤者是張志新(化名)和其女友劉穎尘颓,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體晦譬,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡疤苹,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了敛腌。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片卧土。...
    茶點(diǎn)故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖像樊,靈堂內(nèi)的尸體忽然破棺而出尤莺,到底是詐尸還是另有隱情,我是刑警寧澤生棍,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布颤霎,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏捷绑。R本人自食惡果不足惜韩脑,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望粹污。 院中可真熱鬧段多,春花似錦、人聲如沸壮吩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽鸭叙。三九已至觉啊,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間沈贝,已是汗流浹背杠人。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留宋下,地道東北人嗡善。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像学歧,于是被迫代替她去往敵國和親罩引。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評論 2 353

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