类目 延展

如果想为Student类添加一个方法,现在有两种方法
直接修改Student类的源码,声明一个方法并实现。
使用类目。
在无法获取类的源码且需要给一个类添加方法的情况下,类目的作用就非常重要了。
创建类目的语法也非常简单,代码如下
@interface Student (Test)

-(void)test;

@end
@implementation Student (Test)

-(void)test
{
NSLog(@”这里是Student类目的test方法”);
}
@end
声明和实现的关键字都和之前一样。
不同的是,声明时候不需要指定父类,而是直接写要添加方法的类的名字,但后面一定要加一个括号,且括号里面写上类目名字。一个类可以有多个类目。
有了这个类目之后,虽然Student类的源码中没有test方法,但仍然可以正常用Student对象去调用这个方法。
Student * s = [[Student alloc] init];
[s test];
2,延展
延展可以看作是一种匿名的类目,类有时需要一些只为自己所见,所用的私有方法这种私有方法可以通过延展的方式来声明。
比如上文中的Student类有一个作弊的方法,不像被外界看得,但有不影响本身调用。这个方法就可以声明在延展内,而方法的实现仍然在Student的类内。
@interface Student ()
-(void)zuobi;
@end
通常我们会将类的声明放在扩展名为.h的文件内,实现放在扩展名为.m的文件内。在生产的可执行文件包种.m文件会被编译加密成.a文件,且不可逆转。
Student.h文件
@interface Student : NSObject

@property(nonatomic,strong)NSString * name;

@end
Student.m 文件
@interface Student ()
-(void)zuobi;
@end

@implementation Student (Test)

-(void)test
{
NSLog(@”这里是Student类目的test方法”);
}

-(void)zuobi
{
NSLog(@”正在作弊”);
}

@end
通常将延展的声明也放在.m文件中,这样便可以隐藏类的方法,不被外界所发现且类内可以正常使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值