Objective-C之@类别小实例

简介:

循序渐进的类别小实例

内容大纲:

  • 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 }
复制代码
相关文章
|
Java iOS开发 C++
Objective-C类别(category)和扩展(Extension)的基本概念
Objective-C类别(category)和扩展(Extension)的基本概念
164 0
|
iOS开发
《Objective-C函数速查实例手册》——导读
本节书摘来自异步社区《Objective-C函数速查实例手册》一书中的目录,作者 张权,更多章节内容可以访问云栖社区“异步社区”公众号查看
1380 0
|
开发工具 数据安全/隐私保护 iOS开发
|
iOS开发
【《Objective-C基础教程 》笔记ch02】(二)Boolean类型及实例
一、布尔类型         布尔类型是一种对带符号的字符类型(signed char)的类型定义,使用8位的存储空间。         通过#define指令把YES定义为1,NO定义为0,都是8位的二进制数。
969 0