• 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 }
     
  • 相关阅读:
    css3实现渐变进度条
    从实际项目出发,浅淡什么是设计空间
    消失的Controller
    深入理解Go系列一之指针变量
    48个国际音标简述
    【PyTorch】按照 steps 训练和保存模型
    用C/python手写redis客户端,兼容redis集群 (-MOVED和-ASK),快速搭建redis集群
    jsoncpp安装与使用 cmake安装 升级g++ gcc支持c++11
    【Android】解决Android Studio初次配置可能会出现的Unkown Host问题
    【数据结构】时间复杂度和空间复杂度计算
  • 原文地址:https://www.cnblogs.com/goodboy-heyang/p/4932034.html
Copyright © 2020-2023  润新知