• OC-类别/分类


    from : http://www.cnblogs.com/wendingding/p/3709569.html

    Category,有人译作类别,或分类。其作用是在不改变原来的类内容的基础上,为类增加一些方法。

    添加一个分类:

    Person+Boy便是所创建的分类。

    在分类中添加一个方法

    //
    //  Person+Boy.h
    //  WDDGouzaofangfaTest
    //
    //  Created by LiuChanghong on 15/9/25.
    //  Copyright © 2015年 LiuChanghong. All rights reserved.
    //
    
    #import "Person.h"
    
    @interface Person (Boy)
    
    -(void)playWithMe;
    
    @end
    Person+Boy.h
    //
    //  Person+Boy.m
    //  WDDGouzaofangfaTest
    //
    //  Created by LiuChanghong on 15/9/25.
    //  Copyright © 2015年 LiuChanghong. All rights reserved.
    //
    
    #import "Person+Boy.h"
    
    @implementation Person (Boy)
    
    -(void)playWithMe{
        NSLog(@"Play With Me !");
    }
    
    @end
    Person+Boy.m

    测试程序

    //
    //  main.m
    //  WDDGouzaofangfaTest
    //
    //  Created by LiuChanghong on 15/9/25.
    //  Copyright © 2015年 LiuChanghong. All rights reserved.
    //
    
    #import <Foundation/Foundation.h>
    #import "Student.h"
    #import "Person+Boy.h"
    
    int main(int argc, const char * argv[]) {
        @autoreleasepool {
            
            Person *person = [Person new];
            [person playWithMe];
            
        }
        return 0;
    }
    测试程序

    输出结果

    分类的使用注意

    (1)分类只能增加方法(包括类方法和对象方法),不能增加成员变量

    (2)在分类方法的实现中可以访问原来类中的成员变量;

    (3)分类中可以重新实现原来类中的方法,但是会覆盖掉原来的方法,导致原来的方法无法再使用(警告)

    (4)方法调用的优先级:分类->原来的类->父类,若包含有多个分类,则最后参与编译的分类优先;

    (5)在很多的情况下,往往是给系统自带的类添加分类,如NSObject和NSString,因为有的时候,系统类可能并不能满足我们的要求。

    (6)在大规模的应用中,通常把相应的功能写成一个分类,可以有无限个分类,对原有类进行扩充,一般分模块写,一个模块一个分类。

  • 相关阅读:
    Hive中频繁报警的问题
    Hadoop中Namenode的HA查询和切换
    昨天面试遇到的一道C语言题
    【转】MapReduce的优化
    关于linux修改max user processes limits的问题
    Hadoop-2.6.0安装文档
    C#使用RabbitMQ
    windows配置Erlang环境
    【转】linux查看及修改文件权限以及相关
    (转)C#图解—PictureBox.SizeMode 属性
  • 原文地址:https://www.cnblogs.com/liuchanghong/p/4838866.html
Copyright © 2020-2023  润新知