Object-C 学习笔记(二十)---类目(类别)Category

来源:互联网 发布:英雄无敌3兵种数据 编辑:程序博客网 时间:2024/06/12 06:36

类目:可以扩充不能被继承的类的功能(方法),属于公有,跟在类里写没区别可以被子类继承,一般不要覆盖原来类的方法,因为延展的执行级别比原本类高.

注意:

(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;}



















0 0
原创粉丝点击