Categories(类别)
作用:可以在不获悉,不改变原来代码的情况下往里面添加新的方法,只能添加,不能删除修改。 并且如果类别和原来类中的方法产生名称冲突,则类别将覆盖原来的方法,因为类别具有更高的优先级。
先创建一个类A,在他的.m文件中的@implementation 上面添加如下代码
@interface A (TestCategory) //这是一个categories
- (void) testCategaryMethod1;
- (BOOL) testCategaryMethod2: (NSObject *) aThing;
@end
//下面是类A的实现
@implementation A......
TestCategory的实现在A+TestCategory.m中
#import "A+TestCategory.h"
@implementation A (TestCategory)
- (void) testCategaryMethod1{
NSLog(@"this is testCategaryMethod1");
}
- (BOOL) testCategaryMethod2: (NSObject *) aThing{
NSLog(@"this is testCategaryMethod2");
return YES;
}
@end
在A.m中引入A+TestCategory.h后,就可以在A中调用
[self testCategaryMethod1];
Extensions(类扩展)
作用:和categery一样,只是可以在extensions 中声明变量,添加的方法是必须要实现,且实现必须在A中的@implementation中实现
@interface A() //这是一个extensions 注意括号中没有值
@property(assign) NSInteger i;
- (void)extensionsTest;
@end
-(void)extensionsTest{
_i = 1000;
NSLog(@"%d",_i);
}
以上就我我对categories和extensions的粗浅理解,有错误的话希望大家指正,谢谢。