最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺析Objective-C中分類Category的使用

 更新時間:2016年03月01日 09:06:43   作者:yhawaii的喃喃自語  
這篇文章主要介紹了淺析Objective-C中分類Category的使用,使用Category對類進行擴展可以訪問原始類的實例變量,需要的朋友可以參考下

無論一個類設計的如何完美,都不可避免的會遇到沒有預測到的需求,那怎么擴展現(xiàn)有的類呢?當然,繼承是個不錯的選擇。但是Objective-C提供了一種特別的方式來擴展類,叫Catagory,可以動態(tài)的為已經存在的類添加新的行為。這樣可以保證類的原原來的基礎上,較小的改動就可以增加需要的功能。使用Category對類進行擴展時,不需要訪問其源代碼,也不需要創(chuàng)建子類,這樣我們可以擴展系統(tǒng)提供的類。Category使用簡單的方式,實現(xiàn)了類的相關方法的模塊化,把不同的類方法分配到不同的分類文件中。
使用Object-C中的分類Category,是一種編譯時的手段,允許我們通過給一個類添加方法來擴充它(但是通過category不能添加新的實例變量),并且我們不需要訪問類中的代碼就可以做到,這點和javascript中使用原型來定義屬性有點類似。
我們可以為一個類創(chuàng)建一個新的方法,而不需要在代碼中編輯類定義。
下面就是定義并使用分類的例子程序,通過下面代碼,我們可以給Object-C中的NSString 添加camelCaseString分類,使用camelCaseString方法,就可以去掉一個字符串中的空格,并將原有空格后的單詞改寫成大寫(即將字符串轉化為駝峰式)。
通過一個簡單的例子看看Category如何使用。

復制代碼 代碼如下:

#import <Foundation/Foundation.h> 
 
/*
定義分類的過程大致可分為以下幾個步驟:
    第一步、創(chuàng)建一個帶有接口的新文件,即創(chuàng)建已有類
 
    第二步、在新文件中添加需要擴展的方法及方法的實現(xiàn),即需要添加的分類
 */ 
//NSString 表示將要添加分類的類名稱,該類必須是已存在的。 
//CamelCase 是為類添加的方法名稱。 
//只能添加方法,不能添加變量。 
//頭文件命名慣例:ClassName+CategoryName.h 
@interface NSString (CamelCase) 
 
-(NSString*) camelCaseString; 
 
@end 
 
@implementation NSString (CamelCase) 
 
-(NSString*) camelCaseString 

    //調用NSString的內部方法獲取駝峰字符串。 
    //self指向被添加分類的類。 
    NSString *castr = [self capitalizedString]; 
     
    //創(chuàng)建數(shù)組來過濾掉空格, 通過分隔符對字符進行組合。 
    NSArray *array = [castr componentsSeparatedByCharactersInSet: 
                      [NSCharacterSet whitespaceCharacterSet]]; 
     
    //把數(shù)組的字符輸出 
    NSString *output = @""; 
    for(NSString *word in array) 
    { 
        output = [output stringByAppendingString:word]; 
    } 
     
    return output; 
     

 
@end 
int main (int argc, const char * argv[]) 

     
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; 
     
    NSString *str = @"My name is bill."; 
    NSLog(@"%@", str); 
    str = [str camelCaseString]; 
    NSLog(@"%@", str); 
     
    [pool drain]; 
    return 0; 


那Category的使用場景有那些呢:
1、類包含了很多個方法實現(xiàn),而這些方法需要不同團隊的成員來實現(xiàn)
2、當你在使用基礎類庫中的類時,你不想繼承這些類而只想添加一些方法時。
 
Category能實現(xiàn)上面的需求,當然也有使用Category是需要注意的問題:
1、Category可以訪問原始類的實例變量,但不能添加實例變量,如果想添加變量,那就通過繼承創(chuàng)建子類來實現(xiàn)。
2、Category可以重載原始類的方法,不大不推薦這么做,這樣會覆蓋掉原始類的方法。如果確實要重載,那就通過繼承創(chuàng)建子類來實現(xiàn)。
3、和普通接口有所區(qū)別的是,在Category的實現(xiàn)文件中的實例方法只要你不去調用它你可以不用實現(xiàn)所有聲明的所有方法。

相關文章

  • ios中圖像進行壓縮方法匯總

    ios中圖像進行壓縮方法匯總

    在Iphone上有兩種讀取圖片數(shù)據(jù)的簡單方法: UIImageJPEGRepresentation和UIImagePNGRepresentation. UIImageJPEGRepresentation函數(shù)需要兩個參數(shù):圖片的引用和壓縮系數(shù).而UIImagePNGRepresentation只需要圖片引用作為參數(shù).
    2015-05-05
  • 解密ios響應鏈的工作原理

    解密ios響應鏈的工作原理

    本文將深入探討事件響應鏈的工作原理,并提供?Swift?中的代碼示例來幫助讀者更好地理解這一概念
    2023-03-03
  • iOS如何將UIButton中的圖片與文字上下對齊詳解

    iOS如何將UIButton中的圖片與文字上下對齊詳解

    對于UIButton實現(xiàn)上顯示圖片,下顯示文字這個需求估計各位iOS開發(fā)者們都不陌生,所以下面這篇文章主要給大家介紹了關于iOS如何將UIButton中圖片與文字上下對齊的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-10-10
  • iOS開發(fā)UICollectionView實現(xiàn)拖拽效果

    iOS開發(fā)UICollectionView實現(xiàn)拖拽效果

    這篇文章主要為大家詳細介紹了iOS開發(fā)UICollectionView實現(xiàn)拖拽效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • 實例講解iOS音樂播放器DOUAudioStreamer用法

    實例講解iOS音樂播放器DOUAudioStreamer用法

    本篇文章給大家通過實例講解了iOS音樂播放器DOUAudioStreamer用法以及分享了實例代碼,一起學習參考下吧。
    2017-12-12
  • iOS開發(fā)中實現(xiàn)顯示gif圖片的方法

    iOS開發(fā)中實現(xiàn)顯示gif圖片的方法

    這篇文章主要介紹了iOS開發(fā)中實現(xiàn)顯示gif圖片的方法,代碼基于傳統(tǒng)的Objective-C,需要的朋友可以參考下
    2015-09-09
  • iOS10 Xcode8開發(fā)適配問題及解決方案

    iOS10 Xcode8開發(fā)適配問題及解決方案

    前段時間升級了Xcode8,整體來說對OC的影響不大,但是還是會有這樣那樣的問題,下面小編給大家總結了遇到的適配問題及解決方案,對xcode8 ios10適配問題感興趣的朋友一起看看吧
    2016-11-11
  • iOS開發(fā)中使用Quartz2D繪制上下文棧和矩陣的方法

    iOS開發(fā)中使用Quartz2D繪制上下文棧和矩陣的方法

    這篇文章主要介紹了iOS開發(fā)中使用Quartz2D繪制上下文棧和矩陣的方法,代碼基于傳統(tǒng)的Objective-C,需要的朋友可以參考下
    2015-11-11
  • iOS開發(fā)中UIPopoverController的使用詳解

    iOS開發(fā)中UIPopoverController的使用詳解

    這篇文章主要介紹了iOS開發(fā)中UIPopoverController的使用,代碼基于傳統(tǒng)的Objective-C,需要的朋友可以參考下
    2015-11-11
  • iOS獲取當前連接的WiFi以及IP地址

    iOS獲取當前連接的WiFi以及IP地址

    本文主要介紹了iOS獲取當前連接的WiFi以及IP地址方法的核心代碼。具有很好的參考價值,下面跟著小編一起來看下吧
    2017-03-03

最新評論

林甸县| 田阳县| 宣恩县| 雷山县| 承德市| 四平市| 交口县| 丘北县| 松滋市| 岑巩县| 姜堰市| 新民市| 汽车| 南开区| 丹东市| 武义县| 万源市| 平昌县| 密山市| 疏勒县| 雅江县| 麻城市| 新蔡县| 潞西市| 辽阳市| 西和县| 来安县| 通江县| 醴陵市| 年辖:市辖区| 芷江| 赣榆县| 嘉定区| 诸暨市| 涟源市| 澄城县| 永和县| 阜城县| 安岳县| 林甸县| 卢氏县|