本章介紹OC中的類目和延展,費話很少說,直接進入主題。那麼什麼是類和延展?框架
類目:爲已知的類增長新的方法;ide
延展:通知在本類的定義裏使用類目來聲明私有方法;spa
1、類目:blog
一、類目方法的應用:繼承
1)對現有類進行擴展:如:能夠擴展Cocoatouch框架中的類,在類目中增長的方法會被子類繼承,並且在運行時跟其餘的方法沒有區別。接口
2)做爲子類的替代手段:不須要定義和使用一個子類,能夠經過類目直接向已有的類裏增長方法。開發
3)對類中的方法歸類:利用catigory把一個龐大的類劃分爲小塊來分別進行開發,從而更好地對類中的方法進行更新和維護。get
二、類目方法的侷限性:編譯器
新的實例變量,類目沒有位置來容納實例變量。若是想增長類的實例變量,只能經過定義子類的方式。
2)如若,在類目中覆蓋前後類的方法。這樣會引發super消息的斷裂,由於類目總的方法具備更高的優先級,所以,通常不要覆蓋現有類中的方法。
三、類目的定義:
類目的命名規則:類名+擴展方法,如「NSString+Revert」。類目的接口聲明與類的定義十分類似,但類目不繼承父類,只須要帶有一個括號,代表該類目的主要用途。
四、舉例說明:
NSString+Revert.h文件:
NSString+Revert.m文件:
2、延展:
類的延展可當作是一種匿名的類目,類有時須要一些只有本身看得見的,所用的私有方法能夠經過延展的方式來聲明,延展中定義的方法在類自己的@implementation代碼區域中進行實現。
當在定義延展的時候不提供類目名時,延展中定義的方法既被視爲「必須實現」的API在這種狀況下,若是方法沒有實現代碼,那麼編譯器會報警告,這個時候方法的實現就必定要出如今類主體的@implementation代碼塊中了。
理論結合程序,盡本身最大的努力將程序解釋清楚,但願可以幫助到有須要的同窗,若是有不懂的問題能夠相互溝通,相互關注,多瞭解一些內容。