Objective-C - 分类(类别)的应用 Category

分类(类别)的应用 Category

/*
 分类的作用:在不改变原来类内容的基础上,可以为类增加一些方法

 使用注意:
 1.分类只能增加方法,不能增加成员变量
 2.分类方法实现中可以访问原来类中声明的成员变量
 3.分类可以重新实现原来类中的方法,但是会覆盖掉原来的方法,会导致原来的方法没法再使用
 4.方法调用的优先级:分类(最后参与编译的分类优先) --> 原来类  --> 父类
 */
#import "Person.h"
#import "Person+One.h"
#import "Person+Two.h"

int main()
{
    Person *p = [[Person alloc] init];
    //p.age = 10;

    // 优先去分类中查找,然后再去原来类中找,最后再去父类中找
    [p test];
   // [p study];

    return 0;
}

主类

@interface Person : NSObject
{
    int _age;
}
@property int age;
- (void)test;
@end
@implementation Person
- (void)test
{
    NSLog(@"Person-test");
}
@end

分类一

#import "Person.h"

@interface Person (One)
- (void)test2;
@end
#import "Person+One.h"

@implementation Person (One)
- (void)test2
{
    NSLog(@"-----test2");
}

- (void)test
{
    NSLog(@"Person (One)-test");
}
@end

分类二

#import "Person.h"

@interface Person (Two)
- (void)study;
@end
#import "Person+Two.h"

@implementation Person (Two)
- (void)study
{
    NSLog(@"学习-----%d", _age);
}

- (void)test
{
    NSLog(@"Person (Two)-test");
}
@end

分类的应用

/*
 给NSString增加一个类方法:计算某个字符串中阿拉伯数字的个数
 给NSString增加一个对象方法:计算当前字符串中阿拉伯数字的个数
 */

#import <Foundation/Foundation.h>

@interface NSString (Number)

+ (int)numberCountOfString:(NSString *)str;

- (int)numberCount;

@end

@implementation NSString (Number)

//  @"abc434ab43"
+ (int)numberCountOfString:(NSString *)str
{
     //1.定义变量计算数字的个数
    int count = 0;

    for (int i = 0; i<str.length; i++)
    {
        unichar c = [str characterAtIndex:i];

        if ( c>=‘0‘ && c<=‘9‘)
        {
            count++;
        }
    }
    return count;

    return [str numberCount];
}

- (int)numberCount
{
    int count = 0;

    for (int i = 0; i<self.length; i++)
    {
        // 取出i这个位置对应的字符
        unichar c = [self characterAtIndex:i];

        // 如果这个字符是阿拉伯数字
        if ( c>=‘0‘ && c<=‘9‘ )
        {
            count++;
        }
    }

    return count;
}

@end
#import <Foundation/Foundation.h>
#import "NSString+Number.h"

int main()
// 类库:很多类的集合
{
    // int count = [NSString numberCountOfString:@"54d43a43s43dasd"];

    int count = [@"9fdsfds543543" numberCount];

    NSLog(@"%d", count);
    return 0;
}

时间: 2024-07-30 00:35:21

Objective-C - 分类(类别)的应用 Category的相关文章

分类类别不平衡问题

一.什么是类不平衡 在分类中经常会遇到:某些类别数据特别多,某类或者几类数据特别少.如二分类中,一种类别(反例)数据特别多,另一种类别(正例)数据少的可怜.如银行欺诈问题,客户流失问题,电力盗窃以及罕见疾病识别等都存在着数据类别不均衡的情况. 二.为什么要对类不平衡进行特殊处理 传统的分类算法旨在最小化分类过程中产生的错误数量.它们假设假阳性(实际是反例,但是错分成正例)和假阴性(实际是正例,但是错分为反例)错误的成本是相等的,因此不适合于类不平衡的数据. 有研究表明,在某些应用下,1∶35的比

[Objective-c 基础 - 2.8] category分类/类别/类目

A.给某个类扩充方法(不改变原来的类) 例如,给类Person加上名为Simon的category,加上一个-study方法 使用()注明 Person+Simon.h 1 @interface Person (Simon) 2 - (void) study; 3 @end 4 5 Person+Simon.m 6 @implementation Person (Simon) 7 - (void) study 8 { 9 NSLog(@"学习----"); 10 } 11 @end 使

【Object-C】类别与扩展Category

Object-C 的动态特征允许使用类别为现有的类添加新方法,并且不需要创建子类,不需要访问原有类的源代码. 通过使用类别,可以动态的为现有的类添加新方法,而且可以将类定义模块化的分布到多个相关文件中. point: 1.定义类名必须是该项目中没有的类,而定义类别时使用的类名必须是已有的类 2.定义类别时必须使用()来包含类别名 3.类别中通常只定义类方法和实例方法,不能添加实例变量(可以通过扩展extension添加) 4.不要重载另外的方法,导致原方法不可用 5.根据需要可以有多个分类,分类

ios 中Category类别(扩展类)专题总结

原创地址   http://www.code4blog.com/archives/294 类别 类别是一种为现有的类添加新方法的方式. 利用Objective-C的动态运行时分配机制,可以为现有的类添加新方法,这种为现有的类添加新方法的方式称为类别catagory,他可以为任何类添加新的方法,包括那些没有源代码的类. 类别使得无需创建对象类的子类就能完成同样的工作 一.创建类别 1.声明类别 声明类别与声明类的形式很相似 @interface  NSString(NumberConvenienc

八.OC基础加强--1.autorelease的用法 2.ARC下内存管理 3.分类(category)4.block的学习

1.autorelease的用法   1.自动释放池及autorelease介绍 (1)在iOS程序运行过程中,会创建无数个池子,这些池子都是以栈结构(先进后出)存在的. (2)当一个对象调用autorelease时,会将这个对象放到位于栈顶的释放池中 . 2.为什么会有autorelease? OC的内存管理机制中比较重要的一条规律是:谁申请,谁释放. 但有些情况下,开发者并不能确定某些对象何时释放.这时候就需要自动释放池. 它的好处是: (1)不需要再关心对象释放的时间 : (2)不需要再关

objective-c中Category类别(扩展类)专题总结

objective-c中Category 类别.扩展 专题总结 http://blog.csdn.net/jiajiayouba/article/details/21105873 分类: IOS 2014-03-12 18:19 1293人阅读 评论(0) 收藏 举报 类别扩展 objective-c中Category类别(扩展类)专题总结 objective-c类别的作用? 通过类别的方式,可以将类的实现分散到不同的文件里. haoxue 2011-11-19 14:03 类别 类别是一种为现

OC分类(Category)

Category 分类 ,又称为类别.类目 概念 1 Category有多种翻译:分类.类别.类目(一般叫分类的多) 2 Category式OC特有的语法,其他语言没有的语法(类似于C#语言中的"扩展方法"和partial 关键字 作用 1 在不修改原有类的基础上增加新的方法 2 一个庞大的类可以分模式开发 3 一个庞大的类可以由多个人来编写,更有利于团队合作 使用Category的作用 1 1)对现有类进行扩展 2 比如,你可以扩展Cocoa touch框架中的类,你在列表中增加的方

[ios]objective-c中Category类别(扩展类)专题总结

本文转载至 http://yul100887.blog.163.com/blog/static/20033613520126333344127/ objective-c类别的作用?通过类别的方式,可以将类的实现分散到不同的文件里. 类别类别是一种为现有的类添加新方法的方式.利用Objective-C的动态运行时分配机制,可以为现有的类添加新方法,这种为现有的类添加新方法的方式称为类别catagory,他可以为任何类添加新的方法,包括那些没有源代码的类.类别使得无需创建对象类的子类就能完成同样的工

Objective-C:分类(Category、extension)

分类(Category .Extension) (一)分类的划分 (2) 1.(命名的类别)类别Category:只能添加新的方法,不能添加新变量. 2.(未命名的类别)类的扩展Extension://扩展一般直接写在类的实现文件中     //扩展中定义的都是类中私有的实例变量和方法 (二)分类的使用 (1)分类只能增加方法(包括类方法和对象方法),不能增加成员变量 (2)在分类方法的实现中可以访问原来类中的成员变量: (3)分类中可以重新实现原来类中的方法,但是会覆盖掉原来的方法,导致原来的