1.不能再分类里面添加属性, 只能添加方法。
2.如果在分类里面使用@property,那么他只生成sette,getter的声明而没有实现。
3.如在在分类中写了与本类同名的方法,优先调用分类里面的方法
4.在分类里面可以访问本类里面所定义的属性
例子:目录
主函数main.m
#import <Foundation/Foundation.h>
#import "NSString+CategoryNSString.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSString *str=@"abc";
NSLog(@"%@", [str Reverser]);
NSLog(@"%d",[str leng].intValue);
}
return 0;
}
类目文件:NSString+CategoryNSString.h
#import <Foundation/Foundation.h>
@interface NSString (CategoryNSString)
-(NSString *)Reverser;
-(NSNumber *)leng;
@end
类目文件:NSString+CategoryNSString.m
#import "NSString+CategoryNSString.h"
@implementationNSString (CategoryNSString)
/**
* 字符串反转函数
*
* @param string 传入的字符串
*
* @return 逆序后的字符串
*/
-(NSString *)Reverser{
NSMutableString *str=[NSMutableString string];
for (unsigned long i=(self.length); i>0; i--) {
[str appendFormat:@"%c",[self characterAtIndex:i-1]];
}
return str;
}
/**
* 把字符串长度int类型变成NSNumber类型
*
* @param string 出入的字符串
*
* @return NSNumber,字符串的长度
*/
-(NSNumber *)leng{
NSNumber *num=[[NSNumber alloc]initWithUnsignedLong:self.length];
return num;
}
@end