类目:可以扩充不能被继承的类的功能(方法),属于公有,跟在类里写没区别可以被子类继承,一般不要覆盖原来类的方法,因为延展的执行级别比原本类高.
注意:
(1)不能添加实例变量
(2)不是继承父类
(3)不建议覆盖父类方法,避免造成super消息断裂
实例:给NSString添加类目
//
// NSMutableString+DecStr.h
// Category
//
// Created by 5016 on 13-12-16.
// Copyright (c) 2013年 dradon. All rights reserved.
//
#import <Foundation/Foundation.h>
/*
*定义类目,可以扩充不能被继承的类的功能(方法),属于公有,跟在类里写没区别
*可以被子类继承,一般不要覆盖原来类的方法,因为延展的执行级别比原本类高
*/
@interface NSString (DecStr)
//不能添加实例变量
//不是继承父类
//不建议覆盖父类方法,避免造成super消息断裂
-(NSString*)decString:(NSString *)pram;
-(NSString *)noRepeatWord:(NSString *)str;
@end
//
// NSMutableString+DecStr.m
// Category
//
// Created by 5016 on 13-12-16.
// Copyright (c) 2013年 dradon. All rights reserved.
//
#import "NSString+DecStr.h"
@implementation NSString (DecStr)
/*
*方法:decString
*参数:pram---排序字符串
*功能:字符串倒序排列
*/
-(NSString*)decString:(NSString *)pram
{
//创建空字符串
NSMutableString *str = [[NSMutableString alloc] init];
NSInteger len = [pram length];//先获取它长度
for(NSInteger i = len-1 ; i >=0 ; i--)
{
[str appendString:[pram substringWithRange:NSMakeRange(i, 1)]];//拼接字符串
}
return [str autorelease];
}
/**
*返回没有重复字母的可变字符串
*/
-(NSString *)noRepeatWord:(NSString *)str
{
//创建空字符串
NSMutableArray *marr = [[NSMutableArray alloc] init];
NSMutableSet *mset = [[NSMutableSet alloc] init];
//1.取它长度
NSInteger len = [str length];
//2.过滤元素
for(NSInteger i = 0 ; i <len ; i++)
{
//给set添加元素
[mset addObject:[str substringWithRange:NSMakeRange(i, 1)]];
}
//3.取交集
for(int i = 0 ; i <len ; i++)
{
if([mset containsObject:[str substringWithRange:NSMakeRange(i, 1)]])//如果包含
{
[marr addObject:[str substringWithRange:NSMakeRange(i, 1)]];//添加元素
[mset removeObject:[str substringWithRange:NSMakeRange(i, 1)]];//减掉自己
}
}
[mset release];
return [[marr componentsJoinedByString:@""] autorelease];
}
@end
//
// main.m
// Category
//
// Created by 5016 on 13-12-16.
// Copyright (c) 2013年 dradon. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "NSString+DecStr.h"
int main(int argc, const char * argv[])
{
@autoreleasepool {
//不可变字符串倒序排列
NSString *mstr = @"dragon";
NSString *dec = [mstr decString:mstr];
NSLog(@"dec = %@",dec);
NSString *repeatWords = @"ashdashjhhhsggafgggb";
NSString *noRepeatWords = [mstr noRepeatWord:repeatWords];
NSLog(@"noRepeatWords = %@",noRepeatWords);
}
return 0;
}