分类作用
分类:可以给某一个类扩充一些方法(不修改原来类的代码)
格式
@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
{
int count =
0;
for (
int i =
0; i<
self.length; i++)
{
unichar c = [
self characterAtIndex:i];
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
{
return (
int)(
self.length - other
.length);
}
@end
注意事项
Category 可以访问原始类的实例变量,但不能添加变量,只能添加方法,如果想添加变量,可以考虑通过继承和创建子类Category 可以实现原始类的方法,但不推荐这么做,因为它是直接替换掉原来的方法,这么做的后果是再也不能访问原来的方法多个 Category 中如果实现了相同的方法,只有最后一个参与编译的才会有效方法调用的优先级:分类(最后参与编译的分类优先) –> 原来类 –> 父类
新博客文章地址:Category 分类、类别 总结
转载请注明原文地址: https://ju.6miu.com/read-1296186.html