循序渐进的类别小实例
内容大纲:
- 1、小实例的问题需求和问题思路分析
- 2、C语言模块化思想解决方法
- 3、类别的使用
- 4、开发经验者的类别用法
1、小实例的问题需求和问题思路分析:
已知一个字符串,要求找出字符串中所有的阿拉伯数字并计算其个数 例如@"a123sb23r2jsowsalwf"求数字的个数 1、计数器思想,定义一个变量保存结果 2、遍历字符串,取出字符串中所有的字符
2、C语言模块化思想解决方法
1 #import2 3 int getStrCount(NSString* str) 4 { 5 int count = 0; 6 for (int i = 0; i < str.length; i++) { 7 unichar c = [str characterAtIndex:i]; 8 if (c >= '0' && c <= '9') { 9 count++;10 }11 }12 return count;13 }14 15 int main(int argc, const char * argv[]) {16 @autoreleasepool {17 NSString* str = @"a123sb23r2jsowsalwf";18 NSLog(@"%d",getStrCount(str));19 }20 return 0;21 }
3、类别的使用
思路:因为是计算NSString对象的数字的个数,所以可以通过类别,将这个计算的功能作为NSSting的拓展方法。
创建NSString+getStrCount的类别
1 #import2 3 @interface NSString (getStrCount)4 5 +(int)getStrCount:(NSString*)str;6 7 @end
1 #import "NSObject+getStrCount.h" 2 3 @implementation NSString (getStrCount) 4 5 +(int)getStrCount:(NSString*)str{ 6 int count = 0; 7 for (int i = 0; i < str.length; i++) { 8 unichar c = [str characterAtIndex:i]; 9 if (c >= '0' && c <= '9') {10 count++;11 }12 }13 return count;14 }15 16 @end
然后在客户端:
1 int main(int argc, const char * argv[]) {2 @autoreleasepool {3 NSString* str = @"a123sb23r2jsowsalwf";4 NSLog(@"%d",[NSString getStrCount:str]);5 }6 return 0;7 }
4、开发经验者的类别用法
NSString+getStrCount类别中
1 #import2 3 @interface NSString (getStrCount)4 5 -(int)count;6 7 @end
1 #import "NSObject+getStrCount.h" 2 3 @implementation NSString (getStrCount) 4 5 -(int)count{ 6 int count = 0; 7 for (int i = 0; i < self.length; i++) { 8 unichar c = [self characterAtIndex:i]; 9 if (c >= '0' && c <= '9') {10 count++;11 }12 }13 return count;14 }15 @end
然后在客户端:
1 int main(int argc, const char * argv[]) {2 @autoreleasepool {3 NSString* str = @"a123sb23r2jsowsalwf";4 NSLog(@"%d",[str count]);5 }6 return 0;7 }