Objective-C学习笔记(二)–Category和Extension
2013-10-21 12:19
495 查看
1 Category
1.1描述:
是对原有类的一个扩展1、在Category定义的方法,会成为原始类的一部分,与其他方法的调用 没有区别
2、通过给父类定义Category方法,其子类也会继承这些方法。如果子类添加Category方法
1.2应用:
1、对现有类进行一个扩展2、作为子类的替代手段:不需要定义和使用一个子类,你可以通过Category直接向已有的类里增加方法
3、对类中的方法归类:用用category指导一个庞大 的类划分为小块来分别进行开发,从而更好的对类中的方法进行更新和维护。
1.3局限性
1、无法向Category中添加新的实例亦是,Category没有位置来容纳实例亦是。如果想增加类的实例亦是,只能通过定义子类的方式。2、如若,在Category中覆盖现有类的方法。这样会引起 super消息的断裂,因为Category中的方法具有更高的优先级,因此,一般不要覆盖现有类中的方法。
1.4命名与用法
命名规则:类名+扩展方法。如NSString+ReverseCategory的接口声明与类的定义十分相似,但炐不继承父类,只需要带有一个括号,表明该类的主要用途。
项目工程结构:
NSString+Reverse.h
#import "Foundation/Foundation.h"; @interface NSString (Reverse) -(NSString *) reverseString; @end
NSString+Reverse.m
#import "NSString+Reverse.h" @implementation NSString (Reverse) -(NSString *) reverseString { NSUInteger len=[self length]; NSMutableString *restStr=[NSMutableString stringWithCapacity:len ]; while (len>0) { unichar c= [self characterAtIndex:--len]; NSString *str=[NSString stringWithFormat:@"%C",c]; [restStr appendString:str]; } return restStr; } @end
使用先#import “NSString+Reverse.h”
main.m
#import "Foundation/Foundation.h"; #import "NSString+Reverse.h" int main(int argc, const char * argv[]) { @autoreleasepool { NSString *str= [NSString stringWithFormat:@"hello world"]; NSString *resverseStr=[strreverseString]; NSLog(@"%@",resverseStr); } return 0; }
2 Extension
类的扩展就如同是“匿名”的Category,extension中声明的方法在类本身的@implementation和对应的@end【在.m文件】之间实现。类有时候需要方法只有所见,因为只要是在.h文件中声明的方法外部都可以见。所以可以通过extension来实现此类需求。
使用场景:实现方法的私有化
Foo.h
#import "Foundation/Foundation.h"; @interface Foo : NSObject @end
Foo.m
#import "Foo.h" @interface Foo() -(void) test2; @end @implementation Foo -(void) test1{ [self test2]; } -(void) test2{ NSLog(@"===test2===="); } @end
给更多精彩欢迎访问我的个人小站:http://www.90worker.com
相关文章推荐
- iOS学习笔记06—Category和Extension
- 【iOS学习笔记】Category和Extension
- 学习笔记(objective-c)-扩展(extension)
- Objective-C 学习笔记3 类的扩展(category)
- iOS学习笔记06—Category和Extension
- IOS学习笔记-Category与Extension
- Objective-C基础学习笔记(七)-分类-Category-类的本质-load和+initialize方法-SEL数据
- 学习笔记(objective-c)-类别(category)
- iOS学习笔记2(结合项目)--Category和Extension的区别
- 黑马程序员----OC学习笔记之category,extension,protocol
- iOS学习笔记06—Category和Extension
- 44.iOS学习笔记—Category和Extension
- iOS学习笔记(13)—— Objective-C类扩展的方法之一——分类(category)
- Objective-C学习笔记
- 【Objective-C学习笔记】OC三大特性:封装、继承、多态
- 黑马程序员——Objective-C程序设计(第4版)学习笔记之09-多态、动态类型和动态绑定——黑马 IOS 技术博客
- Objective-C 学习笔记1 HelloWorld
- objective-c 学习笔记- 继承、重写、虚方法
- 黑马程序员-14-Objective-C学习笔记(反射)
- Objective-C学习 笔记