iOS中的分类

>分类的作用作用:

    1> 在不修改原有类源文件的情况下,给类扩充新的方法

    2> 一个庞大的类可以分模块开发

    3> 一个庞大的类可以多人编写


>使用分类的目的

    1> 对现有的类进行扩展

        比如,你可以扩展Cocoa touch框架中的类,你在类别中增加的方法会被子类所继承,而且

        在运行时跟其他的方法没有区别

 

    2> 作为子类的替代手段

        不需要定义和使用一个子类,你可以通过类别直接向已有的类里增加方法

 

    3> 对类中方法进行归类

        利用category 把一个庞大的类划分成小块来分别进行开发,从而更好的对类中的方法进行维护




//  Person.h

//  Gategory 分类

#import <Foundation/Foundation.h>


/**

 *  Person类的声明,无任何方法

 */

@interface Person : NSObject


@end


/**

 *  Person的分类base的声明

 */

@interface Person (base)

- (void)eat;

- (void)run;

@end


//  Person.m

//  Gategory 分类

#import "Person.h"

/**

 *  Person类的实现,无任何方法

 */

@implementation Person


@end


/**

 *  Person分类的实现

 */

@implementation Person (base)


- (void)eat {

    NSLog(@"人会吃");

}

- (void)run {

    NSLog(@"人会跑");

}

//

//  Person+playGame.h

//  Gategory 分类

#import "Person.h"


/**

 *  playGame分类的声明

 */

@interface Person (playGame)

- (void)playLol ;

- (void)playDota;

@end


//  Person+playGame.m

//  Gategory 分类

#import "Person+playGame.h"


/**

 *  playGame分类的实现

 */

@implementation Person (playGame)

- (void)playLol {

    NSLog(@"Person正在玩LOL");

}


- (void)playDota {

    NSLog(@"Person正在玩Dota");

}

@end


//  main.m

//  【分类】声明和实现

#import <Foundation/Foundation.h>

#import "Person.h"


// 1、包含分类的头文件

#import "Person+playGame.h"


int main(int argc, const char * argv[]) {

    @autoreleasepool {

        

        // 2、创建一个Person对象

        Person *p = [[Person alloc]init];

        

        // 3、调用分类对象

        // Person Base 分类的方法

        [p eat];

        [p run];

        

        // Person playGame分类的方法

        [p playDota];

        [p playLol];

        

    }

    return 0;

}




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值