Category 分类、类别 总结 - iOS
2016-08-13 20:59
295 查看
分类作用
分类:可以给某一个类扩充一些方法(不修改原来类的代码)格式
// 声明 @interface Person (分类名称) @end // 实现 @implementation Person (分类名称) @end
好处
一个庞大的类可以分模块开发一个庞大的类可以由多个人来编写,更有利于团队合作
给系统自带的类添加分类
给 NSString 添加一个类方法,计算某个字符串中阿拉伯数字的个数给 NSString 添加一个对象方法,计算当前字符串中的阿拉伯数字的个数
#import <Foundation/Foundation.h> @interface NSString (YZ) // 增加一个类方法计算某个字符串内部英文字母的个数 + (int)zimuCountOfStr:(NSString *)str; // 增加一个对象方法计算当前字符串内部英文字母的个数 - (int)zimuCount; // 增加一个类方法比较两个字符串的长度,返回长度差 + (int)compareLengthBetweenStr1:(NSString *)str1 andStr2:(NSString *)str2; // 增加一个对象方法和其他字符串比较长度,返回长度差 - (int)compareLengthWithOther:(NSString *)other; @end
#import "NSString+YZ.h" @implementation NSString (YZ) // 增加一个类方法计算某个字符串内部英文字母的个数 + (int)zimuCountOfStr:(NSString *)str { return [str zimuCount]; } // 增加一个对象方法计算当前字符串内部英文字母的个数 - (int)zimuCount { // 1.定义变量记录字母的个数 int count = 0; for (int i = 0; i<self.length; i++) { // 2.取出每一个字符 unichar c = [self characterAtIndex:i]; // 3.如果字符是英文字母 if ( (c>='a' && c<='z') || (c>='A' && c<='Z') ) { count++; } } return count; } // 增加一个类方法比较两个字符串的长度,返回长度差 + (int)compareLengthBetweenStr1:(NSString *)str1 andStr2:(NSString *)str2 { return [str1 compareLengthWithOther:str2]; } // 增加一个对象方法和其他字符串比较长度,返回长度差 - (int)compareLengthWithOther:(NSString *)other { // self.length返回的是NSUInterger类型,转成int就不会有警告 return (int)(self.length - other.length); } @end
注意事项
Category 可以访问原始类的实例变量,但不能添加变量,只能添加方法,如果想添加变量,可以考虑通过继承和创建子类Category 可以实现原始类的方法,但不推荐这么做,因为它是直接替换掉原来的方法,这么做的后果是再也不能访问原来的方法
多个 Category 中如果实现了相同的方法,只有最后一个参与编译的才会有效
方法调用的优先级:分类(最后参与编译的分类优先) –> 原来类 –> 父类
新博客文章地址:Category 分类、类别 总结
相关文章推荐
- 关于ios object-c 类别-分类 category 的静态方法与私有变量,协议 protocol 
- Objective-C,ios,iphone开发基础:分类(category,又称类别)
- Objective-C ,ios,iphone开发基础:Category(分类,类别,范畴) ,UINavigationBar设置背景图片适配
- ios category(类别又称分类)的优缺点
- 关于ios object-c 类别-分类 category 的静态方法与私有变量,协议 protocol 
- iOS中Category类别(扩展类)专题总结
- ios 中Category类别(扩展类)专题总结
- [ios]objective-c中Category类别(扩展类)专题总结
- 关于ios object-c 类别-分类 category 的静态方法与私有变量,协议 protocol
- [置顶] Objective-C,/,ios,/iphone开发基础:分类(category,又称类别)
- 关于ios object-c 类别-分类 category 的静态方法与私有变量,协议 protocol&nbsp
- 【iOS知识学习】_协议(delegate)和类别(category)
- 特有语法,分类Category,protocol协议,block (总结)
- ios category类别的使用
- iOS类别(Category)与扩展(Extension)
- ios类别(Category)与扩展(Extension)
- objective-c中Category 类别、扩展 专题总结
- OC总结----类的方法.继承.NSString类的常用方法.NSMutableString 类的方法.数组类.字典类.block语法以及数组排序高级.属性.category (分类,类目).延展,等
- ios 分类(Category)
- ios 类别(category)