• Object-C中Category类体验


    Object-C中Category类体验

    Object-C开发的时候有的时候会用到Category类,类似于Java和C#中扩展类,就是如果你觉得如果你觉得常用的方法在String中没有,可以根据业务需求和个人喜好写一个扩展类,然后在其中补充自己的方法,如果单纯的扩展已有类型来看基本上是一样的。OC还有可以对已经存在类通过Category进行扩展,这个特点又和C#中的partial class有的类似,先来看下是如何操作的吧:

    新建的时候选择Object-C File:

    选择类型为Category,第一个是是Categroy名称,第三个类选择可以是知己新建的类,也可以是系统本身的类,本次选的个人新建的:

    这个时候生成文件如下:

    写了几行代码,Book+FlyElephant.h代码:

    1
    2
    3
    4
    5
    6
    7
    8
    <span style="font-family: 'Microsoft YaHei';">#import "Book.h"
     
    @interface Book (FlyElephant)
     
    - (void)detialMore:(NSString*)author;
     
    @end
    </span>

      Book+FlyElephant.m中的代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <span style="font-family: 'Microsoft YaHei';">#import "Book+FlyElephant.h"
     
    @implementation Book (FlyElephant)
     
    - (void)detialMore:(NSString*)author
    {
        NSLog(@"分类中可以获取更多的详细信息%@",author);
    }
     
    @end
    </span>

      具体调用代码:

    1
    2
    3
    <span style="font-family: 'Microsoft YaHei';">Book *book=[Book new];
        [book detialMore:@"keso"];
    </span>

     以上的实现比较简单,上面有一个关于NSString的Categroy类的,跟Book创建差不多,实现了一个方法就是如果字符串超过一定的长度,返回特定值:

    NSString+StrExtend.h中的代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    <span style="font-family: 'Microsoft YaHei';">#import <Foundation/Foundation.h>
     
    @interface NSString (StrExtend)
     
    +(NSString *)subStr:(NSString *)originalStr;
    - (NSString *)subStr2;
     
    @end
    </span>

    NSString+StrExtend.m中的代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <span style="font-family: 'Microsoft YaHei';">#import "NSString+StrExtend.h"
     
    @implementation NSString (StrExtend)
     
    + (NSString *)subStr:(NSString *)originalStr
    {
        return [originalStr length]<10?@"长度不够,请重新输入":[originalStr substringWithRange:(NSMakeRange(0, 10))];
    }
    - (NSString *)subStr2
    {
        return  self.length<10?@"长度不够,请重新输入":[self substringWithRange:(NSMakeRange(0, 10))];
    }
     
    @end
    </span>

      具体的调用:

    1
    2
    3
    4
    <span style="font-family: 'Microsoft YaHei';">   NSLog(@"%@",[NSString subStr:@"气若兰兮长不改,心若兰兮终不移"]);
        NSString *str=[@"气若兰兮长不改,心若兰兮终不移" subStr2];
        NSLog(@"%@",str);
    </span>

      第一个是静态方法也就是类方法调用需要NSString调用,第二个是动态方法也就是对象方法,调用稍微简单点,其他的应该都很容易理解~如有不当,多多指正~

    作者:FlyElephant
    出处:http://www.cnblogs.com/xiaofeixiang
  • 相关阅读:
    STM32中GPIO的8种工作模式
    robots.txt与搜索引擎
    关于《腾讯工具类APP的千年老二》的读后感
    PCB布线的操作步骤
    c语言数据库编程ODBC
    锂电池相关结构优势特点及其保护电路解析方案
    C语言中的#与##字符的作用
    PADS中Layer的描述说明
    吃了单片机GPIO端口工作模式的大亏——关于强推挽输出和准双向口(弱上拉)的实际应用
    Protel与PADS之间相关文件的转换
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/4217529.html
Copyright © 2020-2023  润新知