038.category 分类/类别

本文详细介绍了如何在Objective-C中为NSNumber类添加自定义方法,包括加法、减法、乘法和除法操作。通过使用category分类,可以在不创建子类的情况下扩展现有类的功能,同时不影响其子类的行为。

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

--------------- NSNumber+fk.h  ---------------
#import <Foundation/Foundation.h>
@interface NSNumber (fk)
- (
NSNumber*) add: (double) num2;
- (
NSNumber*) substract: (double) num2;
- (
NSNumber*) multiply: (double) num2;
- (
NSNumber*) divide: (double) num2;
@end

--------------- NSNumber+fk.m  ---------------
#import "NSNumber+fk.h"

@implementation NSNumber (fk)
- (
NSNumber*) add: (double) num2
{
     return [NSNumber numberWithDouble: ([self doubleValue] + num2)];
}
- (
NSNumber*) substract: (double) num2
{
     return [NSNumber numberWithDouble: ([self doubleValue] - num2)];
}
- (
NSNumber*) multiply: (double) num2
{
     return [NSNumber numberWithDouble: ([self doubleValue] * num2)];
}
- (
NSNumber*) divide: (double) num2
{
     return [NSNumber numberWithDouble: ([self doubleValue] / num2)];
}
@end

---------------  main.m  ---------------
#import <Foundation/Foundation.h>
#import "NSNumber+fk.h"
int main()
{
   
NSNumber* myNum = [NSNumber numberWithInt: 3];
   
NSNumber* add = [myNum add:2.4];
   
NSLog(@"%@", add);
   
NSNumber* substract = [myNum substract:2.4];
   
NSLog(@"%@", substract);
   
NSNumber* multiply = [myNum multiply:2.4];
   
NSLog(@"%@", multiply);
   
NSNumber* divide = [myNum divide:2.4];
   
NSLog(@"%@", divide);
}

一、编写本节代码的具体步骤:
1.打开Xcode。
2.点击Create a new Xcode project。
3.选择OS X下的Application,然后点击Command Line Tool,点next。
4.填写项目名称,机构名称和机构标志,选择Language是Objective-C,点next。
5.选择文件储存目录,不要勾选Create Git repository on My Mac,点Create。
6.右击左侧导航栏中排在首位的黄色文件夹。
7.在弹出的菜单中,选择NewFile,选择OS X,Source,Objective-C File,点next。
8.填写分类的文件名,选择类型为Category,选择类名,点next。
9.选择存储位置,点Create。

二、本节代码涉及到的知识点:
1.category分类可以为已知类增加一些新的方法,而且不需要创建子类,不需要访问/修改原有类。
2.以本节代码为例,分类在源文件名的命名是:NSNumber+fk.h 和 NSNumber+fk.m。(源文件名只是方便辨识,并无实际意义)
3.以本节代码为例,分类在源代码里的命名是:NSNumber (fk)。
4.通过分类添加新方法之后,这些新方法不仅会影响到NSNumber类,还会影响到NSNumber类的所有子类。
  每一个子类都会获取这些新方法。
5.通过分类可以重写原类中的原有方法,但通常不推荐这样做。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值