程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> Objective-C基礎筆記(4)Category

Objective-C基礎筆記(4)Category

編輯:關於C語言

Objective-C基礎筆記(4)Category


OC中提供了一種與眾不同的方式--Category,可以動態的為已經存在的類添加新的行為(方法),這樣可以保證類的原始設計規模較小,功能增加時再逐步擴展。

在使用Category對類進行擴展時,不需要創建子類,Category使用簡單的方式,實現了類的相關方法的模塊化,把不同的類方法分配到不同的分類文件中。

下面我們通過三個分類例子來看一下如何使用分類:

接著我們上一篇的代碼,下面我們創建一個Student的Test分類,創建過程如下:

\

\

\

注意上面的Student+Test.h和Student+Test.m這兩個文件就是我們為Student類創建的分類文件

Student+Test.h文件

#import "Student.h"

@interface Student (Test)

- (void)test;

@end
Student+Test.m文件

#import "Student+Test.h"

@implementation Student (Test)

- (void) test {
    NSLog(@"調用了Student的Test分類的test方法");
}

@end
main.m文件

#import 
#import "Student.h"
#import "Student+Test.h"

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        Student *stu = [[[Student alloc] initStudent:23] autorelease];
        [stu test];
    }
    return 0;
}
運行結果:

2014-11-16 11:32:00.861 內存管理[582:33690] 年齡為23的學生被創建了

2014-11-16 11:32:00.862 內存管理[582:33690] 調用了Student的Test分類的test方法

2014-11-16 11:32:00.862 內存管理[582:33690] 年齡為23的學生被釋放了

分類除了這種寫法其實可以直接寫到Student.h和Student.m中,而不用單獨創建文件。我們也可以給系統的類(NSString)進行分類,比如我們給NSString添加一個處理json的方法。

#import 

@interface NSString (JSON)

+ (void)json;

@end
#import "NSString+JSON.h"

@implementation NSString (JSON)

+ (void) json{
    NSLog(@"{'nam':'CodeingSnal', 'age',24");
}

@end

分類的使用場景:

1、在定義類的某些情況下(例如需求變更),你可能需要給其中的某個或某幾個類添加新的方法。

2、一個類中包含了許多不同種類的方法需要實現,而這些方法需要不同的團隊的成員實現。

3、在使用基礎類庫的類時,有可能希望這些類實現一些自己需要的方法,比如寫個NSString+JSON.h,為NSString這個類拓展一些解析JSON的方法。


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