• 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
  • 相关阅读:
    POJ 1015 Jury Compromise【DP】
    POJ 1661 Help Jimmy【DP】
    HDU 1074 Doing Homework【状态压缩DP】
    HDU 1024 Max Sum Plus Plus【DP,最大m子段和】
    占坑补题。。最近占的坑有点多。。。
    Codeforces 659F Polycarp and Hay【BFS】
    Codeforces 659E New Reform【DFS】
    Codeforces 659D Bicycle Race【计算几何】
    廖大python实战项目第四天
    廖大python实战项目第三天
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/4217529.html
Copyright © 2020-2023  润新知