------Java培训、Android培训、iOS培训、.Net培训--------
1、非正式协议
显然这个名词是相对于正式协议而言
1)在《Cocoa设计模式》第六章类别中讲到:【非正式协议通常定义为Foundation框架中NSObject的类别】。类别接口中制定的方法可能会或者可能不会被框架类实际地实现,而被子类重写。
2)【所谓非正式协议就是类别,即凡是给NSObject或其子类的类别】,都是非正式协议
2、应用举例
【要求给NSString类新增一个统计字符串中有多少个数字的方法】
1)新建一个非正式协议名字叫做countDigit
【NSString+countDigit.h文件内容】
@interface NSString(countDigit)
//统计一个字符串中数字的个数
-(int)countDigit;
@end
【NSString+countDigit.m文件内容】
@implementationNSString (countDigit)
-(int)countDigit{
int count = 0;
char ch ;
for (int i = 0; i < self.length; i++) {
//取出字符串中对应位置字符
ch = [self characterAtIndex:i];
//如果字符在0~9之间就是数字了
if (ch >='0' && ch <= '9') {
count++;//计数+1
}
}
return count;
}
@end
【NSString+countDigit.m文件内容】
#import "NSString+countDigit.h"
int main(int argc, const char * argv[])
{
@autoreleasepool {
NSString *str = @"abad123kjkjh456asdfgs789";//共9个数字
NSLog(@"【%@】 digit number = %d",str, [str countDigit]); }
return 0;
}
打印结果:
2015-10-07 11:10:14.185 非正式协议[789:303] 【abad123kjkjh456asdfgs789】 digit number = 9