Category(范畴)的使用方法与介绍

今天给大家介绍一下我们常说的Category的详细用法,首先引用API文档的一段话:

You use categories to define additional methods of an existing class—even one whose source code is unavailable to you—without subclassing.

从这段话中我们可以看出Category(范畴)的本质:
在不需要继承一个父类的情况下来实现另外的类中的某些方法,哪怕那个类的源代码不是开源的。
那么说到源代码不开源,我们首当其冲地就想到了iOS的SDK(也就是Cocoa Touch 框架),我们只能查看他们的头文件声明但是不能查看.m文件的实现。所以范畴用的比较多的情况就是在我们自己的类中去实现SDK中某个类的既有方法。
当然我们也可以在我们自己写的两个类中间使用category,这种情况一般有两种:
1.当我们一个类过于庞大的时候我们可以将它拆分成若干个category,在各个category的.m文件中去实现,这样避免主类的.m实现文件过长和混乱。
2.声明私有方法。

这些都应该好理解的,可能我的描述也有一些地方不够精确,但应该没有大的偏差,主要是用的时候理解对就行了。我们来看看category的声明方式:


<script src="https://code.csdn.net/snippets/756.js" type="text/javascript"></script>


然后是名字了,如果我们写好了一个范畴,比如叫做ObjecoderCategory,引用的Class叫做UITableView ,那么我们的Category的源文件名字就应该是UITableView+ObjecoderCategory.h .这在我们的XMPPFramework中的扩展类中,例如XMPPMessage+XEP0045,大家应该不陌生吧:

<script src="https://code.csdn.net/snippets/757.js" type="text/javascript"></script>



如果你是想用Category声明私有方法,那么只需要在你的类的.h文件的@implementation标记前面加上这个Category的声明即可了,不需要单独去创建新的xxx+xxx.h文件,这个跟我们的@protocal写法很类似,例如:


<script src="https://code.csdn.net/snippets/758.js" type="text/javascript"></script>



除开这个,我们更为普通的情况是我们如果基于一个无法查看源代码的类之上写了一个Category,这个时候我们由于没有"父类"的.m文件的查看和修改权利,所以我们只有创建一个xxxx+xxxx.h/.m文件在里面实现Category的扩展方法,实现方式如下:
<script src="https://code.csdn.net/snippets/759.js" type="text/javascript"></script>




其实看到这里,我只想说,这一段代码看起来就如同这一段java代码:
public interface CategoryName extends SystemClass{
     //Category中的接口
}




有没有?


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值