• ObjectiveC Category 初体验


    Categories可以为一个对象添加方法而不需要增加该类的子类或者更改当前的对象。实际上Categories通常被用来为已经存在的类添加方法,比如你可以自己为 NSString 字符串类添加你自己的方法。

    Step1: 创建项目

    启动Xcode -> File -> New -> Project. 然后创建一个 iOS Single View Applciation。这里我们命名为 Categories.

     

     

    Step2: 创建Category

    现在来创建一个Category来为NSString添加扩展方法。点击 File -> New -> File 然后选择 Cocoa Touch Objective-C category. 这里我们命名为 RemoveNums。记得要从 Category on 下拉框选择 NSString,最后点击Create按钮旁的Next按钮。

     

    声明Category扩展的方法。

    选择 "NSString+RemoveNums.h"文件。添加以下代码:

    @interface NSString(RemoveNums)

     -(NSString *)removeNumbersFromString:(NSString *)string;

    @end

     

    实现Category扩展的方法

    接着来到"NSString+RemoveNums.m"文件。添加以下代码。大家可以看到这个方法实际做的事情就是从整个NSString去除掉所有的数字字符。

    - (NSString *)removeNumbersFromString:(NSString *)string {

      NSString *trimmedString = nil;

      NSCharacterSet *numbersSet = [NSCharacterSet  characterSetWithCharactersInString:@"0123456789"];

      trimmedString = [string stringByTrimmingCharactersInSet:numbersSet];

      return trimmedString;

    }

    Step3: 导入Category

    在"ViewController.h"文件头部添加以下代码来导入Category

    #import "NSString+RemoveNums.h"

    Step4: 测试Category

    在 ViewController.h 文件的 viewDidLoad 方法中添加以下代码。

    NSString *stringWithNums = @"ABC 123";

    NSLog(@"stringWithNus  ----> %@",stringWithNums);

    stringWithNums = [stringWithNums removeNumberFromString:stringWithNums];

    NSLog(@"trimmed stringWithNums ---->%@",stringWithNums);

     

    Step5: 使用Category的方法

    在Xcode的菜单栏点击 Product -> Run,测试过程中,请注意控制台首先输出的 "ABC 123",然后被方法去除数字后输出的"ABC"

     

    结论

    我们都知道添加子类是为某一种对象添加方法的途径,但是为了整个代码更加简洁直观,我们通常会用Category的扩展方法来替代子类的添加。

  • 相关阅读:
    Xen, Linux and udev
    xend的调试方法
    xenstored为什么不能重启?
    [转]xen虚拟windows使用vnc桌面鼠标位置偏移现象的解决
    基于模板的代码生成器
    区分JavaScript中的undefined,null和NaN
    ExtJS+ASP.NET实现异步Tree的节点搜索和查找下一个(FindNext)
    ExtJS+ASP.NET实现Tree节点的拖动(DragDrop)
    ExtJS+ASP.NET实现真实的进度条显示服务器端长时间操作的进度
    说说企业架构(企业级架构)和应用程序架构
  • 原文地址:https://www.cnblogs.com/jiangshiyong/p/2549438.html
Copyright © 2020-2023  润新知