黑马程序员 oc随机 分类与延展

------- android培训java培训ios培训、期待与您交流! ----------

一.分类(Category) 

1.类别的作用

在不修改原类的基础上增加类的功能。

团队之间分工合作更加灵活。

2、使用类别的步骤

先声明类别--->实现类别--->使用类别 

分类的一般格式为:

                声明部分:                   @interface 类名 (分类名) 

                                                      @end 

                实现部分:​                   @implementation 类名(分类名)  

                                                     @end 

注意:不允许在声明类别的时候定义变量,但在延展中可以使用。

例:

#import <Foundation/Foundation.h>

#import "student.h"

#import "student+playgame.h"  //需要增加声明

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

    @autoreleasepool {

        student *s=[student new];

        [s run];  //studengt类中并没有run的方法

     

    }

    return 0;

}

#import <Foundation/Foundation.h>


@interface student : NSObject

//一片空白,防止对结果产生影响

@end


#import "student.h"


@implementation student

//同一片空白

@end


#import "student.h"


@interface student (playgame)  //这是分类,添加了一个名为‘playgame'的分类名,虽然实际内容并不是play game……

-(void)run;  //分类中的方法

@end


#import "student+playgame.h"


@implementation student (playgame)

-(void)run{

    NSLog(@"你正在跑!");  //对run方法进行实现。

}

@end


从代码我们可以看出,分类是在原类之外进行扩展,不对原类的内容进行改动。
需要注意的是,若有多个类以及它们的多个分类都有同个方法时,优先级将从最后被创建的分类-》早些时候创建的分类-》原类。


2.延展

 1       延展类别又称为扩展(Extendsion)Extension是Category的一个特例 其名字为匿名(空),并且新添加的方法一定要予以实现。(Category没有这个限制)

#import "student.h"


@interface student ()


@end


这是一个上面student类的延展,可以看到,它只有.h文件,没有.m文件,它比起分类来说多了添加实例变量的功能,在某些方面比分类有一定优势。

需要注意的是,延展依存于它的类,要想实现延展中声明的方法就必须在原类的.m文件中实现。



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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值