分类(category)

分类(category)

一、分类的作用:

在不改变原来类内容的基础上,可以为类增加一些方法。

二、分类的格式:

分类的声明
@interface 类名 (分类名称)
// 方法声明
@end
分类的实现
@implementation 类名 (分类名称)
// 方法实现
@end
三、分类的好处:

1.一个庞大的类可以分模块开发。
2.一个庞大的类可以由多个人来编写,更有利于团队合作。
3.可以给系统自带的类添加分类,便于自己新增一些方便自己工作的方法。

使用注意:
  1.分类只能增加方法,不能增加成员变量

#import "Person.h"
@interface Person (MJ)
{
          //错误,不能再分类中增加成员变量 
           int _age;
}
@end

2.分类方法实现中可以访问原来类中声明的成员变量。

#import "Person+MJ.h"

@implementation Person (MJ)
- (void)study
{
    //可以访问原来类中声明的成员变量。
    NSLog(@"学习-----%d", _age);
}
@end

3.分类可以重新实现原来类中的方法,但是会覆盖掉原来的方法,会导致原来的方法没法再使用
  4.方法调用的优先级:分类(最后参与编译的分类优先) --> 原来类  --> 父类


#import <Foundation/Foundation.h>
#import "Person.h"
#import "Person+MJ.h"
#import "Person+JJ.h"
int main()
{
    Person *p = [[Person alloc] init];
    // 优先去分类中查找,然后再去原来类中找,最后再去父类中找
    [p test];
    return 0;
}
@implementation Person (JJ)
- (void)test
{
    NSLog(@"Person (JJ)-test");
}
@end
@implementation Person
- (void)test
{
    NSLog(@"Person-test");
}
@end
输出结果:Person (JJ)-test。

原因:就是上面第4条,优先调用分类的方法!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值