OC学习篇之-----类目·延展·协议之--类目

本篇为:类目
以下是个人理解中的类目延展协议:

类目:为本类添加新的方法,例如为NSObject类,继承后自雷同样继承父类的类目中的方法
协议:声明了可以被任何类实现的方法(本身不实现,遵守此协议的类去实现)
延展:为本类添加私有方法,延展的方法只供本类使用

注意:类目和延展都是不可以添加类的实例变量,若必须添加,应该用继承来达到目的(不推荐代码中的添加属性,然后通过重写设置器达到目的)

类目:
1.1.为已知的类添加新的方法
1.2不可添加成员变量
1.3可以被子类继承
2.1.可以在本文件中创建,类目的声明文件需要在已知的类的声明文件中的文件头中,类目的实现文件需要在已知的类的实现文件中的头文件中
2.2.格式:声明文件:@interface 类名 (类目名);
实现文件:@implementation 类名 (类目名);
2.3也可以新创文件,格式与上面一样;
2.4类目中声明的方法可以不在本类中实现,可以在子类中再实现:如下:
NSObject的类目.h文件

#import <Foundation/Foundation.h>

//给NSObject添加一个类目,即非正式协议
@interface NSObject (NSObject_Category)
-(void)test1;
-(void)test2;

@end

NSObject的类目.m文件

#import "NSObject+NSObject_Category.h"
@implementation NSObject (NSObject_Category)
//这里可以不实现,可以在继承了这个类的子类中实现这两个方法
//-(void)test1{
//    NSLog(@"i ma test1");
//}
//
//
//-(void)test2{
//    NSLog(@"i ma test2");
//}

@end

以下是继承了NSObject类的子类的.h文件

#import <Foundation/Foundation.h>
#import "NSObject+NSObject_Category.h"
@interface MyCalss : NSObject

@end

以下是继承了NSObject类的子类的.m文件
父类中类目的方法可以再子类中实现

@implementation MyCalss

-(void)test1{
    NSLog(@"i ma test1,父类中我不实现,我实在子类中实现的");
}

-(void)test2{
    NSLog(@"i ma test2,父类中我不实现,我实在子类中实现的");

}
@end

总结:个人感觉类目也是非常强大的,例如一些OC自身的类,当我们需要用到OC的类的时候,但是里面并没有我们要的方法的时候,我们就可以通过给这类一个类目,然后声明实现我们需要的方法就可以了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值