程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> Object-C中的Category

Object-C中的Category

編輯:C++入門知識

 Object-C中的Category其實是一種對於類的方法的擴充,有些類似於類的繼承,但是和繼承還是不一樣的。下面我

們通過一個例子還說明一個OC中的Category的不同。

首先是.h文件,一般的命名規范為這樣NSString+ReverseString.h,具體的代碼如下


[cpp] 
//  
//  NSString+ReverseString.h  
//  Catagory  
//  
//  Created by bird on 12-10-25.  
//  Copyright (c) 2012年 bird. All rights reserved.  
//  
 
#import <Foundation/Foundation.h>  
 
@interface NSString (ReverseString) 
 
- (id) reverseString; 
 
@end 

//
//  NSString+ReverseString.h
//  Catagory
//
//  Created by bird on 12-10-25.
//  Copyright (c) 2012年 bird. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface NSString (ReverseString)

- (id) reverseString;

@end

然後是他的實現文件,具體如下


[cpp] view plaincopyprint?
//  
//  NSString+ReverseString.m  
//  Catagory  
//  
//  Created by bird on 12-10-25.  
//  Copyright (c) 2012年 bird. All rights reserved.  
//  
 
#import "NSString+ReverseString.h"  
 
@implementation NSString (ReverseString) 
 
- (id) reverseString 

    //這裡的self表示字符串本身,所以length表示字符串本身的長度  
    NSUInteger len = [self length]; 
    NSMutableString *retStr  = [NSMutableString stringWithCapacity:len]; 
    while(len>0){ 
        //從後取一個字符  
        unichar c = [self characterAtIndex:--len]; 
        NSLog(@"c is %C",c); 
        NSString *s = [NSString stringWithFormat:@"%C",c]; 
        [retStr appendString:s]; 
    } 
    return retStr; 

 
@end 

//
//  NSString+ReverseString.m
//  Catagory
//
//  Created by bird on 12-10-25.
//  Copyright (c) 2012年 bird. All rights reserved.
//

#import "NSString+ReverseString.h"

@implementation NSString (ReverseString)

- (id) reverseString
{
    //這裡的self表示字符串本身,所以length表示字符串本身的長度
    NSUInteger len = [self length];
    NSMutableString *retStr  = [NSMutableString stringWithCapacity:len];
    while(len>0){
        //從後取一個字符
        unichar c = [self characterAtIndex:--len];
        NSLog(@"c is %C",c);
        NSString *s = [NSString stringWithFormat:@"%C",c];
        [retStr appendString:s];
    }
    return retStr;
}

@end

可以看到很多類的使用,然後是主文件來調用一下


[cpp] 
//  
//  main.m  
//  Catagory  
//  
//  Created by bird on 12-10-25.  
//  Copyright (c) 2012年 bird. All rights reserved.  
//  
 
#import <Foundation/Foundation.h>  
#import "NSString+ReverseString.h"  
 
int main(int argc, const char * argv[]) 

 
    @autoreleasepool { 
             
        NSString *string = @"測試樣例hello"; 
        NSString *retString = [string reverseString]; 
        NSLog(@"%@",retString); 
    } 
    return 0; 

// www.2cto.com
//  main.m
//  Catagory
//
//  Created by bird on 12-10-25.
//  Copyright (c) 2012年 bird. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "NSString+ReverseString.h"

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

    @autoreleasepool {
           
        NSString *string = @"測試樣例hello";
        NSString *retString = [string reverseString];
        NSLog(@"%@",retString);
    }
    return 0;
}

可以看出,使用Category擴展的方法有點類似於這個類本來就存在的方法,但是實際上不是這樣的。

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