/*
Objective-c - 非正式协议
分类:为已经存在的类写分类叫做分类.
非正式协议:为系统自带的类写的分类,就叫做非正式协议.
例:为NSObject类写分类.为NSObject类写分类,写在分类中的方法,NSObject类和其子类都可以调用.
非正式协议的使用:
我们可以为系统自带的类写分类,然后在分类中添加我们想要的方法,使之更健全更完美.
如下代码://为NSString类添加的分类中添加一个方法实现统计一个字符串数据中的阿拉伯数字的个数
*/
#import <Foundation/Foundation.h>
#pragma mark -
#pragma mark 非正式协议:#import "NSString+YYCount.h"
//声明
@interface NSString (YYCount)
//为NSString类添加的分类中添加一个方法实现统计一个字符串数据中的阿拉伯数字的个数
- (int)countForNum;
@end
//实现
@implementation NSString (YYCount)
//为NSString类添加的分类中添加一个方法实现统计一个字符串数据中的阿拉伯数字的个数
- (int)countForNum
{
int count = 0;
for(int i = 0; i < self.length; i++)
{
unichar ch = [self characterAtIndex:i];
if(ch >= '0' && ch <= '9')
{
count++;
}
}
return count;
}
@end
#pragma mark -
#pragma mark main函数
int main(int argc, const char * argv[]) {
//创建一个oc字符串
NSString *str = @"sdhgaj1ghjgj2hghj3jhghj4ghjg5jhgj6";
int count = [str countForNum];
NSLog(@"count = %d", count);
return 0;
}