1.1作用:可以在不修改原來(lái)類的基礎(chǔ)上,為一個(gè)類擴(kuò)展方法次兆。
1.2最主要的用法:給系統(tǒng)自帶的類擴(kuò)展方法逗概。
2.1分類中只能添加“方法”,不能增加成員變量朋截。
2.2分類中可以訪問(wèn)原來(lái)類中的成員變量,但是只能訪問(wèn)@protect和@public形式的變量吧黄。如果想要訪問(wèn)本類中的私有變量部服,分類和子類一樣,只能通過(guò)方法來(lái)訪問(wèn)拗慨。
2.3如果一定要在分類中添加成員變量廓八,可以通過(guò)getter,setter手段進(jìn)行添加
假設(shè)我們有一個(gè)類赵抢,名叫Person剧蹂,意義是人類。在person類中我們有一個(gè)方法昌讲,-(void)eat;意義是吃国夜,因?yàn)槊總€(gè)人類都會(huì)吃。
人類有很多共同特點(diǎn)短绸,也有很多不同點(diǎn)车吹,比如筹裕,并不是每個(gè)人都會(huì)踢足球朝卒。這時(shí)候我寫一個(gè)分類,給喜歡運(yùn)動(dòng)的人抗斤,這個(gè)分類的名字叫做sport丈咐。因?yàn)槭莗erson類的分類,你會(huì)看到生成的名字叫做Person+sport伤疙。
3.1在本類和分類有相同的方法時(shí)辆影,優(yōu)先調(diào)用分類的方法再調(diào)用本類的方法。
3.2如果有兩個(gè)分類锯蛀,他們都實(shí)現(xiàn)了相同的方法次慢,如何判斷誰(shuí)先執(zhí)行?分類執(zhí)行順序可以通過(guò)targets,Build Phases,Complie Source進(jìn)行調(diào)節(jié)拭抬,注意執(zhí)行順序是從上到下的侵蒙。(只有兩個(gè)相同方法名的分類)
分類(category)和類擴(kuò)展(extension)的關(guān)系
1.類擴(kuò)展(extension)是category的一個(gè)特例纷闺,有時(shí)候也被稱為匿名分類。他的作用是為一個(gè)類添加一些私有的成員變量和方法犁功。
2.類擴(kuò)展能寫點(diǎn)啥婚夫?和分類不同,類擴(kuò)展即可以聲明成員變量又可以聲明方法限嫌。
3.類擴(kuò)展聽(tīng)上去很復(fù)雜,但其實(shí)我們很早就認(rèn)識(shí)他了怒医。你記得繼承自UIViewController的ViewController和繼承自NSObject的類有什么不同么稚叹?
4.繼承自UIViewController的ViewController類
類擴(kuò)展中添加的新方法,一定要實(shí)現(xiàn)扒袖。categorygory中沒(méi)有這種限制。