Category使用以及使用场景

1. Category(以下称类别)非常类似于设计模式中的装饰设计模式,即原先的类不满足需求,需要为其增加新的方法。(但不能增加成员变量)

2. 使用:


基础类及实现
Student.h

#import <Foundation/Foundation.h>

@interface Student : NSObject

-(void) print;
@end


Student.m

#import "Student.h"

@implementation Student

-(void) print {
    NSLog(@"I am a student.");
}

@end


 类别: 

Student + Age.h

#import "Student.h"

// 类别类似于设计模式中的装饰模式
// Student表示一个类
// ()表示有一个类别,
// (Age)表示有个Age类别想扩充Student的方法(在保留原有所有方法的基础上)(但不能扩充属性)
@interface Student (Age)

-(void) printAge;
@end



Student + Age.m:

#import "Student+Age.h"

@implementation Student (Age)

-(void) printAge {
    NSLog(@"Age is 20");
}
@end



main.m(arc模式),直接像调用基础类的方法一样调用类别的方法,就像基础类已经扩充了新的方法一样。

#import <Foundation/Foundation.h>
#import "Student+Age.h"

int main(int argc, const char * argv[])
{

    @autoreleasepool {
        Student *student = [[Student alloc] init];
        
        [student print];
        [student printAge];
        
//        [student release];
    }
    return 0;
}




3. 使用场景:
     1. 需求变更,需要添加新的方法;
     2. 一个类是由多人协作开发(例如使用git),每个人都可以写一个新的类别
     3. 装饰一个基础类。例如觉得NSString不够用,可以新建个类别来补充

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值