扩展一个类

扩展一个类有几种方法呢?

1.修改源代码

2.编写子类

3.Category(类目)

4.Extension(延展)

5.Protocol(协议)

详解:Category

1.作用:为已知的类添加方法

2.使用场景:要扩展的类是系统类,或者第三方非开源类

类目的定义和类的定义相似

1.声明 @interface NSString (SayHi)

2.实现 @implementation NSString (SayHi)

3. 文件名 NSString+SayHi.h  NSString+SayHi.m

使用类目的好处:扩展别人的类,作为子类的替代方式.把一个类的代码放到多个文件中,便于多人协作.

注意:不能在类目中添加实例变量,可以为同一个类添加多个类目,但类目名和类目中的方法不要重复.

不要随意重写原始类中的方法,类目中的方法会成为原始类的一部分,级别相同,会被子类继承.

详解: 延展

延展是特殊形式的类目,在类的.m文件中申明以及实现

作用:为类定义私有方法.注意:在ios中,没有绝对的私有方法,不写类目名时,表示延展中定义的方法必须实现.

如果提供了类目名称,则可以选择性实现.

总结:如果我们有类的源代码,我们既可以为类添加实例变量,也可以为类添加方法,如果没有源代码,只能定义子类为类添加方法或实例变量.

但是如果使用category或者protocol只能为类添加方法,不能添加实例变量,extension可以添加实例变量,但是添加的实例变量为私有,不能被继承.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值