程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> [Objective-C]OC中類別(Category)基本概念與用法

[Objective-C]OC中類別(Category)基本概念與用法

編輯:關於C語言

類別(Category)的基本概念

封裝是面向對象的一個特征,OC也不例外,但是有的時候我們會碰到這樣的一種情況,不如我封裝了一個類,

不想再動它了,可是隨著程序功能的增加,需要在那個類中增加一個小小的方法,這是我們就不必再那個類中

做修改或者在定義一個子類,只需要在用到的地方隨手添加一個該類的類別(Category)即可。

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

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

 

類別方法的應用

 

  • 對現有類進行擴展:比如,可以進行擴展Cocoa touch框架中類,你在類別中增加的方法會被子類所繼承,而且

    在運行時跟其他的方法沒有區別。

     

    • 作為子類的替代手段:不需要定義和使用一個子類,你可以通過類別直接向已有的類別中增加方法。
    • 對類中的方法進行歸類:利用category把一個龐大的類劃分為小塊來分別進行開發,從而更好的對類中的方法進行更新和維護。

      類別方法的局限性

       

      • 無法向類別中,添加新的實例變量,類別沒有位置來容納實例變量。如果想增加類的實例變量,只能通過定義子類的方式。
      • 如若在類別中覆蓋現有類的方法。這樣可能會引起super消息鏈的斷裂,因為類別中的方具有更高的優先級,因此,一般不要覆蓋

        現有類中的方法

        類別的命名和用法

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

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

        \

        聲明文件:

         

        #import 
        
        @interface NSArray (Convert)
        +(NSMutableArray *)arrayFormNumber:(int)number;
        
        @end

          實現文件:
         
        
        #import "NSArray+Convert.h" @implementation NSArray (Convert) +(NSMutableArray *)arrayFormNumber:(int)number{ NSMutableArray *numberArray=[[NSMutableArray alloc]init]; while (number) { int last=number%10; //取出最後一位; number=number/10; [numberArray addObject:[NSNumber numberWithInt:last]]; } return [numberArray autorelease]; } @end

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved