天天看點

Snail—OC學習之類别Category

類别就是向類添加一些有用的功能或者方法 利于開發 類可以是系統類、可以是自定義類

類别跟子類是不一樣的,類别隻能添加一些方法 屬性變量什麼的不可以添加

不建立新類,即可對已有類進行擴充

做項目的時候 跟其他程式員會更好的合作

建立類别的圖放在最後面

我們為系統類NSArray添加一個列印方法 使得能輸出中文

界面如下

Snail—OC學習之類别Category

然後再NSArray+MyNSLog.h中聲明一個函數

#import <Foundation/Foundation.h>

@interface NSArray (MyNSLog)

- (NSString *)printChinese;

@end
           

然後再NSArray+MyNSLog.m中實作

#import "NSArray+MyNSLog.h"

@implementation NSArray (MyNSLog)

- (NSString *)printChinese{
    
    NSMutableString * string = [[NSMutableString alloc] init];
    [string appendString:@"{\n"];
    //我們是位系統類NSArray添加一個能列印出中文的功能 即下面的self是指的我們要輸出的數組
    //即就是要輸出中文的數組
    for (int i = 0; i < self.count; i++) {
      //字元串可以輸出中文
      [string appendFormat:@"\t%@,\n",self[i]];
    }
    [string appendFormat:@"}"];
    
    return string;
}

@end
           

在main.m中隻需引入類别的頭檔案即可 如果是自定義的類 也是隻需把類别的頭檔案進入即可

#import <Foundation/Foundation.h>
#import "NSArray+MyNSLog.h"

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

    @autoreleasepool {
        
        NSArray * array = @[@"我是",@"蝸牛",@"Snail"];
        //系統的輸出結果 中文已亂碼
        /*
         (
         "\U6211\U662f",
         "\U8717\U725b",
         Snail
         )
         */
        NSLog(@"%@",array);
        
        //當我們用添加的那個功能輸出時 中文可以輸出來
        /*
         {
         我是,
         蝸牛,
         Snail,
         }
         */
        NSLog(@"%@",[array printChinese]);
    }
    return 0;
}
           

下面把建立類别的圖附上

首先,建立的适合選擇下面這個檔案

Snail—OC學習之類别Category

下一步,然後 在第一行 寫你自己定義的類别名稱  第二行 是你要為哪個類添加類别

Snail—OC學習之類别Category

然後下一步 儲存即可,就可以看到建立出來了一個類似類的兩個檔案