OC 类的扩展

类的扩展

一   类目(Category)

对现有的类添加新的方法,并且不需要创建子类,不需要访问原有类的源代码.

1.作用

  1)可以扩展别人的类,可以作为子类的替代方法。

  2)把同一类的代码放到多个文件中。

2.形式

  1)文件名:目标类+类目名.h

                        目标类+类目名.m

  2).h文件中


      @interface 需要扩展的类的类名(分类名)  //注意这个地方语法格式和定义类很像,但类名后有括号,而且带有类别名

       -( )method;//方法实现

      @end

例如:

  为字符串添加一个类

NSString+SayHi.h

@interface NSString (SayHi)

-(void)sayHi;//为字符串添加方法


@end

  

NSString+SayHi.m

@implementation NSString (SayHi)

-(void)sayHi

{

    NSLog(@"我是一个特殊字符串 %@,我有sayHi方法",self);

}

@end


3.注意

 1)可以为同一个类添加多个类目,但类目名和方法不能重复。

  2)   只能为类添加方法(不可添加成员变量) 可以添加属性,因为属性的本质是方法.

  3)不可以随意重写类中的方法。

  4)所添加类与原类中方法同级,而且会被子类继承。

  


二 延展(Extension)

延展和类目相似,相当于匿名的类目

1.作用

   为自己的类添加私有方法

2.形式

@interface  类名 

   -( )method;

@end


@implementation 类名

 ……

@end




例如:

Person.h

@interface Person : NSObject

-(void)sayHi;


@end

Person.m

@interface Person(extension)

-(void)test;//声明

@end


@implementation Person

-(void)sayHi

{

    [self test];

}

-(void)test//实现


{

    NSLog(@"...");

}

@end


3.注意

1)不需要创建新文件,直接在原类的.m文件中声明和实现。

2)所谓私有时候仅.m通过[self method]访问,不能在外部通过[对象 method]访问。



三  协议(protocol)

(协议是由@protocol 声明的一组方法列表,只声明方法,不具体实现)

1.作用

将方法定义剥离出来,形成一个单独的文件。

2.形式

@protocol 协议名<其他协议>

-()method;

@end

注:方法默认是@required 必须实现,如果可以不实现用@optional。


3.代理模式

(由别人帮自己实现某个功能的模式称为代理模式)

1)接受代理

@ interface 类名:父类名 <协议名>(多个协议之间用逗号隔开)

….

@end

2)确认协议

@implementation  类名

协议方法

{

}

@end

(代理是谁,谁接受并确认协议)



4.注意

1)协议声明了可以被任何类实现的方法。

2)协议定义了一个其他对象可以实现的接口。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值