優(yōu)點(diǎn):
不需要通過增加子類而增加現(xiàn)有類的行為(方法),且類目中的方法與原始類方法基本沒有區(qū)別;
通過類目可以將龐大一個(gè)類的方法進(jìn)行劃分,從而便于代碼的日后的維護(hù)、更新以及提高代碼的閱讀性;
缺點(diǎn):
無法向類目添加實(shí)例變量,如果需要添加實(shí)例變量,只能通過定義子類的方式;
類目中的方法與原始類以及父類方法相比具有更高優(yōu)先級(jí),如果覆蓋父類的方法,可能導(dǎo)致super消息的斷裂。因此,最好不要覆蓋原始類中的方法。
類別的作用
給系統(tǒng)原有類添加方法,不能擴(kuò)展屬性。
如果類別中方法的名字跟系統(tǒng)的方法名一樣,在調(diào)用的時(shí)候類別中的方法優(yōu)先級(jí)更高;
分散類的實(shí)現(xiàn):如:
+?(NSIndexPath?*)indexPathForRow:(NSInteger)row?inSection:(NSInteger)section
原本屬于NSIndexPath的方法,
但因?yàn)檫@個(gè)方法經(jīng)常使用的表的時(shí)候調(diào)用、跟表的關(guān)系特別密切,因此把這個(gè)方法一類別的形式、聲明在UITableView.h中。
聲明私有方法,某一個(gè)方法只實(shí)現(xiàn),不聲明,相當(dāng)于私有方法。
類別不能聲明變量,類別不可以直接添加屬性。
property描述setter方法,就不會(huì)報(bào)錯(cuò)。