初识Objecive-C 之 类目、延展、协议

类目(Category)
类目基本概念:封装是面向对象的一个特征,我封装了一个类,不想动它,可是随着程序功能的增加,需要在那个类中增加方法,这时我们就不必再那个类中做修改或者定义一个子类,只需在用到的那个方法时随时添加一个该类的类别。
类目的定义
//.h文件中类目 比如学生中有学习类、有生活类等等 它可以对类中得方法归类

@interface Student (Study)

//.m文件就是对分类的类目里的方法进行实现

@implementation Student (Study)

----------------------------------

向已有的类增加方法。如NSArray:

#import <Foundation/Foundation.h>


@interface NSArray (Convert)


//向已有的NSArray类增加方法

+ (NSMutableArray *)arrayFromNumber:(int)number;


@end

----------------------------------

#import "NSArray+Convert.h"


@implementation NSArray (Convert)


+ (NSMutableArray *)arrayFromNumber:(int)number{

    NSMutableArray *numberArray = [[NSMutableArrayalloc]init];

   while (number!=0) {

       int temp = number%10;//取出最后一位

        number /=10;//去掉最后一位

        [numberArrayaddObject:[NSNumbernumberWithInt:temp]];

    }

   return [numberArrayautorelease];

}


@end


----------------------------------
延展(Extension)
延展的概念:它就如同是类目的匿名类。
延展的定义

#import "Student.h"


@interface Student ()

//私有方法声明(延展声明)

- (void) privateMothod;


@end


=========================================
//.m文件中得私有方法  这样方法就可以不让别人知道,只在内部实现。

- (void) privateMothod{

    NSLog(@"This is privateMothod");

}


协议
协议的概念:协议就是一套标准,标准里声明了很多得方法,它不关心怎么实现,具体的实现是由遵循这个协议的类去完成。
声明协议
语法:
@protocol 协议名称
//方法列表
@end

/*协议的声明*/

#import <Foundation/Foundation.h>


@protocol FirstProtocol <NSObject>//@protocol + 协议名称


//必须要实现的方法

@required

- (void)requiredMothod;


//可选的实现方法

@optional

- (void)optionalMothod1;

- (void)optionalMothod2;


@end


Student.h文件中

#import "FirstProtocol.h"

@interface Student :NSObject <FirstProtocol>//在类中导入协议,并在类继承后面加上<协议>


@end

Student.m文件中

- (void)requiredMothod{

   NSLog(@"这个是必须实现的方法");

}

协议的特点:
  • 协议可以被任何类实现
  • 协议本身不是类,它是一个接口
  • 类目也可以采用协议








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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值