OC Category(類別)

類別(Category)的基本概念

       封裝是面向對象的一個特徵,OC也不例外,但是有的時候我們會碰到這樣的一種情況,封裝了一個類,不想再動它了,可是隨着程序功能的增加,需要在那個類中增加一個小小的方法,這是我們就不必再在那個類中做修改或者在定義一個子類,只需要在用到的地方隨手添加一個該類的類別(Category)即可。

   注:

(1)在類別中定義的方法,會成爲原始類的一部分,與其他方法的調用沒有區別。

(2)通過給父類定義類別方法,其子類也會繼承這些方法。如果子類添加類別方法,父類則不會用子類的類別方法。

 

類別方法的好處:

 

  •      @1.    對現有類進行擴展:比如,可以進行擴展Cocoa touch框架中類,你在類別中增加的方法會被子類所繼承,而且在運行時跟其他的方法沒有區別。
  •     @2.     作爲子類的替代手段:不需要定義和使用一個子類,你可以通過類別直接向已有的類別中增加方法。
    •     @3.     對類中的方法進行歸類:利用category把一個龐大的類劃分爲小塊來分別進行開發,從而更好的對類中的方法進行更新和維護。

      類別方法的侷限性

            @1.  無法向類別中,添加新的實例變量,類別沒有位置來容納實例變量。如果想增加類的實例變量,只能通過定義子類的方式。

      •      @2.   如若在類別中覆蓋現有類的方法。這樣可能會引起super消息鏈的斷裂,因爲類別中的方具有更高的優先級,因此,一般不要覆蓋現有類中的方法

        類別的命名和用法

                 類別的命名規則:類名+擴展方法,如:NNString+Add;

                類別的接口聲明與類的定義十分相似,但是類別不繼承父類,只需要帶有一個括號,表明該類的主要用途

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章