无论一个类设计的如何完美,都不可避免的会遇到没有预测到的需求,那怎么扩展现有的类呢?当然,继承是个不错的选择。但是Objective-C提供了一种特别的方式来扩展类,叫Catagory,可以动态的为已经存在的类添加新的行为。这样可以保证类的原原来的基础上,较小的改动就可以增加需要的功能。使用Category对类进行扩展时,不需要访问其源代码,也不需要创建子类,这样我们可以扩展系统提供的类。Category使用简单的方式,实现了类的相关方法的模块化,把不同的类方法分配到不同的分类文件中。
classname+categoryname.h
#import "ClassName.h"
@interface ClassName ( CategoryName )// 方法声明
-(void) newMethod;
@end
classname+categoryname.m
#import "classname+categoryname.h"
@implementation ClassName (CategoryName)
-(void) newMethod{
}
@end
那的Category的使用场景有那些呢:
1、类包含了很多个方法实现,而这些方法需要不同团队的成员来实现
2、当你在使用基础类库中的类时,你不想继承这些类而只想添加一些方法时。
Category能实现上面的需求,当然也有使用Category是需要注意的问题:
1、Category可以访问原始类的实例变量,但不能添加实例变量,如果想添加变量,那就通过继承创建子类来实现。
2、Category可以重载原始类的方法,不大不推荐这么做,这样会覆盖掉原始类的方法。如果确实要重载,那就通过继承创建子类来实现。
3、和普通接口有所区别的是,在Category的实现文件中的实例方法只要你不去调用它你可以不用实现所有声明的所有方法。
分享到:
相关推荐
iOS常用的Category分类你值得拥有。iOS常用的Category分类你值得拥有。
淘宝产品目录分类category.sql
一个php无限分类Category类库 1、通过include包含类库 2、通过new实例化类 3、调用getList()方法获取所有分类列表 4、返回:所有分类列表,可以通过获取fullname显示参考。
一个php无限分类Category类库 1、通过include包含类库 2、通过new实例化类 3、调用getList()方法获取所有分类列表 4、返回:所有分类列表,可以通过获取fullname显示参考。
Objective-C提供了一种特别的方式来扩展类,叫Catagory,可以动态的为已经存在的类添加新的行为。...Category使用简单的方式,实现了类的相关方法的模块化,把不同的类方法分配到不同的分类文件中。
Pytorch实现102类鲜花分类——102 Category Flower Dataset 数据集介绍:102 Category Flower Dataset 数据集由102类产自英国的花卉组成,每类由40-258张图片组成,文件夹种分为训练集train和验证集valid,符合...
Category类库是一个php无限分类类库
主要介绍了浅析Objective-C中分类Category的使用,使用Category对类进行扩展可以访问原始类的实例变量,需要的朋友可以参考下
2019最新从淘宝网商品类目,80多万条,近200MB数据,含完整的表结构及insert语句,希望能对大家有帮助
Category类库是一个php无限分类类库,感兴趣的朋友们可以下载下来,用到自己的项目中。
WordPress 设置固定链接后,分类链接前面会很不识时务地出现category,不少人认为category的出现会影响SEO或者很不美观,今天李攀科博客给大家介绍了一款去掉WP分类链接category的插件No category parents支持3.1...
博主们在使用WordPress搭建的网站时,可能会发现文章的URL地址中默认都会带有Category,URL中带有Category可能既影响用户体验,也不利于SEO地址规范化,因此和大家分享一下去除URL中Category的方法。 首先登录到...
My Category Order排序插件for WordPress,目前为my category order.2.8.7 ...WordPress默认分类列表是按照名称顺序显示的,修改一下调用函数的参数后也仅可以使用分类ID顺序。用此插件分类列表的排序方式能够自行控制
in_category()函数的作用是检查当前或者指定页面是否归属于特定的分类目录,通常用于给不同的分类目录设置不同的文章模板。 【函数用法】 【参数说明】 $category 参数$category(必需)一个或多个目录ID ...
去掉WordPress分类目录链接中的/category/的方法!
joomla category模块,列出分类列表
Spring Boot 2.1.0 新闻发布系统第五章 分类接口Category服务类接口实现