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
- Object-C 学习笔记(二十)---类目(类别)Category
- object-c学习:类别Category
- 学习笔记(objective-c)-类别(category)
- OC--category(类目、分类、类别)
- Object-c学习笔记十三-----类别
- Object-C中的动态特性(Category类别)
- 【Object-C】类别与扩展Category
- Object-C学习笔记-Category(分类)
- Object-C学习笔记-Category(分类)
- OC学习 -- Category(类目)
- 类别(类目)与延展 iOS Category Extension
- objective-C学习笔记:类目
- Object-C学习笔记十-----内存管理
- Category 类别 -Objective-C
- Category 类别 -Objective-C
- Category 类别 -Objective-C
- Category 类别 -Objective-C
- Category 类别 -Objective-C
- 微信公众平台第一篇--认识公众平台
- You must install 'msgfmt' on your build machine
- OpenID倡议:别再创建新的用户名和密码
- iOS中为网站添加图标到主屏幕以及增加启动画面
- UVa 10594 Data Flow / 最小费用最大流
- Object-C 学习笔记(二十)---类目(类别)Category
- 原生的DOM选择器
- 一个简单易懂的c#收邮件程序
- 如何监听视图的addSubView或者移除事件
- mtk平台usb序列号与手机序列号
- Linux tcpdump命令详解
- Extjs 动态加载ComboBox数据
- DrawRect
- ubuntu的常用命令——学习笔记一