在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
一、Category类别 1、Category能把一个类的实现分为若干不同文件中。 2、每个Cagegory是类的一部分。 3、类的不同类别可以单独编译(可以让不同开发者负责一个Category) 4、如果把一个类Category(申明和实现)放到一个.m文件中,那么该Category外界不能访问。这样实现了C++中class的private功能 5、Category实际上就是对类的扩展。 二、缺点 1、类别Category只能扩展函数,消息,不能扩展字段,变量等。Category只能加一些方法不能加一些变量和字段。 三、类别Category命名规范 1、一般Category命名规范 要扩展类名+扩展变量.[hm] 比如:NSString+ReverseString.h NSString+ReverseString.m UIImageView+WebCache.h UIImageView+WebCache.m 2、NSString+Reverse.h头文件 NSString+Reverse.h #import<Foundation/Foundation.h> @interface NSString(reverse) -(NSString *)reverseString @end 3、unichar c=[self characterAtIndex:--len]; NOLog(@"c is C%",c); 注意这里的c是unichar类型,这里的c是包含2个字节的国际字符,所以用C%来表示。这是OC里面特有的东西。 4、实现函数的私有化 @interface Foo(Private) - (void) test2; @end; @implementation Foo - (void) test { [self test2]; } - (void) test2 { NSLog(@"test2 is calling"); } @end; 这个例子用Category实现了函数的私有化。
四、字符串的翻转方法函数扩展 建立一个Category的项目后, NSString+ReverseString.h代码:
View Code
#import <Foundation/Foundation.h> @interface NSString (ReverseString) - (id) reverseString; @end NSString+ReverseString.m
View Code
#import "NSString+ReverseString.h" @implementation NSString (ReverseString) - (id) reverseString { NSUInteger len = [self length]; // self 表示字符串本身 NSMutableString *retStr = [NSMutableString stringWithCapacity:len]; while (len > 0) { unichar c = [self characterAtIndex:--len]; // 从后取一个字符 unicode NSLog(@" c is %C", c); NSString *s = [NSString stringWithFormat: @"%C", c]; [retStr appendString:s]; } return retStr; } @end main.m
View Code
#import <Foundation/Foundation.h> #import "NSString+ReverseString.h" int main (int argc, const char * argv[]) { @autoreleasepool { NSLog(@"Hello, World!"); NSString *string = @"中国万岁hello"; NSString *retString = [string reverseString]; NSLog(@"ret string is %@", retString); } return 0; }
|
请发表评论