黑马程序员技术交流社区

标题: 每日小结:分类category [打印本页]

作者: 崔石炫    时间: 2014-9-25 03:11
标题: 每日小结:分类category
分类用于在不修改原有类的代码的情况下给某个类扩充一些方法。
Xcode中新建一个category分类,取一个分类名,并选择需要扩充的类。
比如:
Category : QMS
Category on : Person
即新建一个名为QMS的分类,用来为Person类做一些扩充。
分类一般应用场景为给系统自带的类扩充一些自有的方法,比如给NSString扩充计算字符串中阿拉伯数字个数的类方法和对象方法:
  1. @interface NSString (MyCategory)
  2. + (int)numberCountOfString:(NSString *)str;
  3. - (int)numberCount;
  4. @end

  5. @implementation NSString (MyCategory)
  6. + (int)numberCountOfString:(NSString *)str
  7. {
  8.         return [str numberCount];
  9. }
  10. - (int)numberCount
  11. {
  12.         int cnt = 0;
  13.         for(int i = 0 ; i < self.length ; i++)
  14.         {
  15.                 unichar c = [self characterAtIndex:i];
  16.                 if(c >= ‘0’ && c <= ‘9’)
  17.                 {
  18.                         cnt++;
  19. }
  20. }
  21. return cnt;
  22. }
  23. @end
复制代码

这里我们新建了一个名为MyCategory的分类,为NSString类进行扩充,以便对字符串进行处理,计算出其中包含的阿拉伯数字0-9的字符个数。我们可以通过如下方式使用:
NSString *str = @”hymmdhs3mkndmkc652,dh”;
NSLog(@”%@中有%d个阿拉伯数字” , str , [str numberCount]);






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2