【延展Extension Objective-C语言】
一、延展Extension是个什么东西:它是个特殊的分类
1.是1个特殊的分类,所以延展也是类的一部分
2.延展的特殊之处:
1)延展这个特殊的分类,没有名字,以前讲过的分类,是不要取个名字啊,记住,延展这个特殊的分类没有名字
2)延展只有声明,没有实现,它的实现是和本类共享1个实现
3.延展的语法:
@interface 本类名 ()
@end
()这里面什么都不要写,就有1个小括号就可以了,这就是延展的声明
有没有@implementation呢,没有,记住,延展只有声明,没有实现。那它的实现在什么地方呢,我们刚刚说过,和本类共享1个实现
二、举个例子:
1.先有1个本类:Person类,如下:
#import <Foundation/Foundation.h>
@interface Person : NSObject
@property(nonatomic,strong)NSString *name;
@property(nonatomic,assign)int age;
- (void)sayHi;
@end
#import “Person.h”
@implementation Person
- (void)sayHi
{
NSLog(@“大家好!”);
}
@end
2.再给它来1个延展:点右键,New File-Objective- C File,选择Extension,给这个延展取个名字,test,我们说过延展是1个分类对不对,那你要延展谁呢,延展Person对不对。
3.这时候,你发现与我们的分类不同的地方在于,它只有一个.h文件,有.m文件吗,没有。而且,刚才给延展取的名字test,是延展的文件名,并不是延展的名字,因为我们说过,延展是没有名字的。你看它声明的@interface Person (),它里面有名字吗,没有。首先这是个分类,因为这个分类没有名字,所以它叫延展。
4.只有1个.h文件,文件名称:本类名+延展的文件名.h,这个文件当中,只有延展的声明
@interface Person ()
@end
5.这个延展,它的作用,仍然是作为类的一部分,也就是这时候,我可以把Person的成员,写在本类里面,也可以把Person的成员,写在延展里面。你不管写在什么地方,都是同一个Person类,例如,在延展中写个方法吧,写个- (void)run;方法
- (void)run;
8:48