iOS开发收集干货程序员

Objective-C Category(分类)

2014-04-29  本文已影响665人  dreamCatcher

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

Categories provide the ability to add functionality to an object without subclassing or changing the actual object. A handy tool, they are often used to add methods to existing classes, such as NSString or your own custom objects.

优点

  1. 提供一种简单的方式,将类的定义模块化到相关方法的组或分类中;
  1. 提供一种简单的方式,扩展现有类定义,不必访问类的源代码,也无须创建子类。

举例

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

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

声明Category扩展的方法。
选择 "NSString+RemoveNums.h"文件。添加以下代码:

@interface  NSString (RemoveNums)//分类名放在圆括号中,为`RomoveNums`
- (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(@"stringWithNums         --> %@",stringWithNums);
stringWithNums = [stringWithNums removeNumbersFromString:stringWithNums];
NSLog(@"trimmed stringWithNums --> %@",stringWithNums);

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

关于Category的注意事项


欢迎来我的个站逛逛: http://alexyu.me/

上一篇下一篇

猜你喜欢

热点阅读