循序渐进的类别小实例
内容大纲:
- 1、小实例的问题需求和问题思路分析
- 2、C语言模块化思想解决方法
- 3、类别的使用
- 4、开发经验者的类别用法
1、小实例的问题需求和问题思路分析:
已知一个字符串,要求找出字符串中所有的阿拉伯数字并计算其个数
例如@"a123sb23r2jsowsalwf"求数字的个数
1、计数器思想,定义一个变量保存结果
2、遍历字符串,取出字符串中所有的字符
2、C语言模块化思想解决方法
1 #import <Foundation/Foundation.h>
2
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 #import <Foundation/Foundation.h>
2
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 #import <Foundation/Foundation.h>
2
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 }