黑马程序员技术交流社区

标题: oc中的category [打印本页]

作者: vyqrvwgf    时间: 2015-11-4 12:43
标题: oc中的category
1.category(分类)的作用
        1)给类新添方法,不改变原有方法
        2)把庞大的类分为若干模块开发
        3)方便多人编写

2.category使用的目的
        1)对现有类进行拓展
        2)作为子类的替代手段
        3)对类中方法归类

3.category使用分类的步骤
        1)声明分类
        2)实现分类
        3)使用分类

4.category使用注意
        1)分类只能增加方法,不能增加成员变量
        2)分类中可以调用原类中的成员变量
        3)分类中可以创建类中的同名方法,优先使用分类中的方法,在多个分类中有同名方法的时候,执行最后编译的那个类别中的同名好方法

5.分类的非正式协议
        1)非正式协议
        凡是NSObject类和其子类都是非正式协议
        2)非正式协议的应用:获得一个字符串中阿拉伯数字个数
       

  1. NSString.h
  2. //为NSString 类增加新的方法
  3. #import <Foundation/Foundation.h>
  4. @interface NSString(countNum)
  5. -(int)countNum;
  6. @end


  7. NSString.m
  8. #import "NSString.h"

  9. @implementation NSString(countNum)
  10. int count;
  11. -(int)countNum{
  12.     for (int i=0; i<[self length]; i++) {
  13.         if ([self characterAtIndex:i]<'9'&&[self characterAtIndex:i]>'0') {
  14.             count++;
  15.         }
  16.     }
  17.     return count;
  18. }
  19. @end


  20. main.m
  21. #import <Foundation/Foundation.h>
  22. #import "NSString.h"
  23. int main(){
  24.     NSString *str=@"h128yh91fh1";
  25.     NSLog(@"有%d个阿拉伯数字",[str countNum]);
  26.     return 0;
  27. }
复制代码



6.category延展
       
  1. Person_extern.h
  2. #import "Person.h"
  3. //分类名为空
  4. @interface Person ()
  5. //可以为类添加新属性
  6. @property (nonatomic,assign) float weight;
  7. -(void)run;
  8. @end
复制代码




延展注意
        1)延展添加的方法一定要在.m文件中实现
        2)延展添加的方法和属性是相对私有的
作者: fengjiequlada    时间: 2015-11-4 23:45
学习了!




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