【Objective-C学习-6】Category

本文介绍如何在不修改原始类、不增加子类的情况下,通过Objective-C的Category为Swift类添加新的方法。具体操作包括创建声明文件和实现文件,并在主文件中导入和调用Category方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Category可以动态的为已经存在的类添加新的行为,但不能添加成员变量。这样可以保证类的原始设计规模较小,功能增加时再逐步扩展。使用Category对类进行扩展时,不需要创建子类。Category使用简单的方式,实现了类的相关方法的模块化,把不同的类方法分配到不同的分类文件中。

假设有一个Student类,现在需要在不修改原始类、不增加子类的情况下,给Student类添加一个test方法,只需要创建Student+Test.h和Student+Test.m文件,在声明文件和实现文件中用“()”把Category的名称括起来即可。


原始类Student:

//Student.h
#import <Foundation/Foundation.h>

@interface Student : NSObject

@end

//Student.m
#import "Student.h"

@implementation Student

@end


Category的声明和定义:

//Student+Test.h
#import "Student.h"

@interface Student (Test)

- (void)test;

@end

//Student+Test.m
#import "Student+Test.h"

@implementation Student (Test)

- (void)test {
    NSLog(@"I am a good student");
}

@end


其中Test是Category的名称,按约定成俗的习惯,将声明文件和实现文件名称统一采用“原始类名+Category”的方式命名。


Category的使用:

//main.m
#import <Foundation/Foundation.h>
#import "Student.h"
#import "Student+Test.h"

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        Student *stu = [[[Student alloc] init] autorelease];
        [stu test];
    }
    return 0;
}

Category的使用场景:

(1)需求变更,需要为类添加新的方法;

(2)把类的方法按功能等进行分类,或者类的方法需要不同的开发成员实现;

(3)在使用基础类库中的类时,实现自定义的一些方法。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值