1.類別(Categroy,分類,擴(kuò)展類)? 其實(shí)一個(gè)名字,在剛開始接觸的時(shí)候真的是差點(diǎn)搞蒙了
在類的原基礎(chǔ)上擴(kuò)展方法躺率,且不可添加變量,如果擴(kuò)展的方法與原始類中的方法相同,則會(huì)隱藏原始方法栈顷,且不可在擴(kuò)展方法中通過(guò)super調(diào)用原始方法盒粮,這里與繼承不同鸵鸥。
在類別中添加 @property
只做了set/get的聲明,沒(méi)有實(shí)現(xiàn)丹皱,更不會(huì)生成成員變量妒穴。
可以通過(guò)runtime添加
類別的作用:
①為現(xiàn)有的類添加新方法;
②將類的實(shí)現(xiàn)分散到多個(gè)不同文件或多個(gè)不同框架中(把一個(gè)大的類按功能劃分成幾塊,便于維護(hù))摊崭;
③通過(guò)替換現(xiàn)有類中的方法讼油,修正現(xiàn)有類(沒(méi)有源碼文件的情況下)的功能或錯(cuò)誤
類別的局限性
①無(wú)法向現(xiàn)有的類中添加新的實(shí)例變量(類別沒(méi)有位置容納實(shí)例變量);
②方法名稱沖突呢簸,即類別中的新方法的名稱與現(xiàn)有類中方法名稱重名矮台,類別具有更高的優(yōu)先級(jí)乏屯,類別中的方法將完全取代現(xiàn)有類中的方法(再也無(wú)法訪問(wèn)現(xiàn)有類中的同名方法)。
2.擴(kuò)展(Extension,匿名類別,延展)
可以在類擴(kuò)展中聲明屬性和實(shí)例變量瘦赫。
類擴(kuò)展聲明必須在 @implementation在實(shí)現(xiàn)辰晕。
所以類擴(kuò)展的成員變量,方法确虱,都不能被外部方法訪問(wèn)含友。