【Objective-C学习笔记】核心语法——分类-Gategory
2015-04-05 09:58
323 查看
一、分类的基本使用
1、作用:在不改变原来类内容的情况下,可以为类增加一些方法
2、新建分类:New File --> OS X Source --> Objective-C File --> File Type选择Category
3、使用注意:
(1)分类只能增加方法,不能增加成员变量
(2)分类方法实现中可以访问用来类中声明的成员变量
二、分类的应用
1. 给NSString增加一个对象方法:计算某个字符串中阿拉伯数字的个数
2. 给NSString增加一个类方法:计算某个字符串中阿拉伯数字的个数
1、作用:在不改变原来类内容的情况下,可以为类增加一些方法
2、新建分类:New File --> OS X Source --> Objective-C File --> File Type选择Category
3、使用注意:
(1)分类只能增加方法,不能增加成员变量
(2)分类方法实现中可以访问用来类中声明的成员变量
#import <Foundation/Foundation.h> // 原来类的声明 @interface Person : NSObject { int _age; //年龄 } @end // 原来类的实现 @implementation Person @end // Person的分类 @interface Person (ceshi) - (void)test2; @end // Person分类的方法实现 @implementation Person (ceshi) - (void)test2 { NSLog(@"------测试2,年龄=%d", _age); } @end int main() { Person *p = [[Person alloc] init]; [p test2]; //------测试2,年龄=0 return 0; }(3)分类可以重新实现原来类中的方法,但是会覆盖掉原来的方法,会导致原来的方法没法再使用
#import <Foundation/Foundation.h> @interface Person : NSObject - (void)test; @end @implementation Person - (void)test { NSLog(@"Person-test方法"); } @end // Person的分类 @interface Person (ceshi) - (void)test; @end // Person分类的方法实现 @implementation Person (ceshi) - (void)test { NSLog(@"Person (ceshi)-test"); } @end int main() { Person *p = [[Person alloc] init]; [p test]; //<span style="font-family: Arial, Helvetica, sans-serif;">Person (ceshi)-test</span> return 0; }(4)如果两个分类中有同名方法,那么按照编译的先后顺序来调用,后调用的方法会覆盖先调用的方法,从Xcode中可以查看编译的先后顺序。
//在上面的例子中继续添加一个分类 @interface Person (Study) - (void)test; @end @implementation Person (Study) - (void)test { NSLog(@"Person (Study)-test"); } @end int main() { Person *p = [[Person alloc] init]; [p test]; return 0; }1> 先编译Person (ceshi),后编译Person (study),那么调用的是Person (study)中的- test方法
// 结果 Person (study)-test2> 先编译Person (study),后编译Person (ceshi),那么调用的是Person (cash)中的- test方法
// 结果 Person (ceshi)-test5、方法调用的优先级:优先找分类中的方法(分类中找后编译的分类中的方法),没有的话去原来类中找,还是没有的话再去父类中找。
二、分类的应用
1. 给NSString增加一个对象方法:计算某个字符串中阿拉伯数字的个数
2. 给NSString增加一个类方法:计算某个字符串中阿拉伯数字的个数
#import <Foundation/Foundation.h> @interface NSString (Number) //计算某个字符串中阿拉伯数字的个数的对象方法 - (int)numberCount; //计算某个字符串中阿拉伯数字的个数的类方法 + (int)numberCountOfString:(NSString *)str; @end @implementation NSString (Number) //计算某个字符串中阿拉伯数字的个数的对象方法 - (int)numberCount { // 1.定义变量保存个数 int count = 0; // 2.遍历字符串,NSString中自带方法length,求字符串长度 for (int i = 0; i < self.length; i++) { //取出对应为止的字符 unichar c = [self characterAtIndex:i]; if (c >= '0' && c <= '9') { count++; } } return count; } //计算某个字符串中阿拉伯数字的个数的类方法 + (int)numberCountOfString:(NSString *)str { return [str numberCount]; } @end int main() { NSString *s = @"itcast123456"; int count = [s numberCount]; NSLog(@"个数是%d", count); return 0; }
相关文章推荐
- 【Objective-C学习笔记】核心语法——实例变量作用域、关键字@property和@synthesize
- 【Objective-C学习笔记】核心语法——类的本质、description方法
- 【黑马程序员】Objective-C语言学习笔记之核心语法(四)
- 【Objective-C学习笔记】核心语法——点语法、id类型、SEL类型
- 【Objective-C学习笔记】核心语法——构造方法
- ASP.NET 3.5核心编程学习笔记(21):LINQ查询语法
- C++开发者快速学习Objective-C语言核心语法
- 黑马程序员——Objective-C程序设计(第4版)学习笔记之11-分类和协议——黑马 IOS 技术博客
- Objective-c学习笔记(二)oc的点语法
- 【zz】C++开发者快速学习Objective-C语言核心语法
- C++开发者快速学习Objective-C语言核心语法
- Objective-C基础学习笔记(一)-程序整体语法结构
- 黑马程序员-8-Objective-C学习笔记(OC特有语法)
- jsp---学习笔记(五)核心技术-语法详解
- 【Objective-C学习笔记】基本语法、类与对象
- Objective-C基础学习笔记(一)-程序整体语法结构
- Objective-c学习笔记(一)oc的基本语法
- Objective-C基础学习笔记(七)-分类-Category-类的本质-load和+initialize方法-SEL数据
- C++开发者快速学习Objective-C语言核心语法
- Objective-C 学习笔记之基本语法(1/2): 类的定义、继承、多态与接口等