前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Objective-C语法基础之Category的使用

Objective-C语法基础之Category的使用

作者头像
Python疯子
发布2018-09-06 16:08:52
3810
发布2018-09-06 16:08:52
举报
文章被收录于专栏:Python疯子Python疯子

Category:扩展类或分类 无论一个类设计的如何完美,都不可避免的会遇到没有预测到的需求,那怎么扩展现有的类呢?当然,继承是个不错的选择。但是Objective-C提供了一种特别的方式来扩展类,叫Catagory,可以动态的为已经存在的类添加新的行为。这样可以保证在类的原来的基础上,较小的改动就可以增加需要的功能。使用Category对类进行扩展时,不需要访问其源代码,也不需要创建子类,这样我们可以扩展系统提供的类。Category使用简单的方式,实现了类的相关方法的模块化,把不同的类方法分配到不同的分类文件中。 通过一个简单的例子看看Category如何使用。 先创建一个简单类:Student

Student.h 文件 #import <UIKit/UIKit.h>

代码语言:javascript
复制
@interface Student : NSObject

- (void)hello;

  @end

Student.m文件 #import "Student.h"

代码语言:javascript
复制
@implementation Student

- (void)hello
{
 NSLog(@"大家好,我是Young");
}

@end

开始创建分类Category 001、command + n,选择Object-C File

WechatIMG30.jpeg

002、选择Category和目标类(给某个类添加分类)

WechatIMG31.jpeg

003、创建成功,在新文件里写扩充方法 在声明文件和实现文件中用“()”把Category的名称括起来。原类名+Category”的这是约定的文件命名方式。文件的名字显示也是如此

WechatIMG32.jpeg

WechatIMG29.jpeg

004、使用Category分类,导入头文件,直接调用方法

WechatIMG34.jpeg

输出结果

WechatIMG35.jpeg

那的Category的使用场景: 1、类包含了很多个方法实现,而这些方法需要不同团队的成员来实现 2、当你在使用基础类库中的类时,你不想继承这些类而只想添加一些方法时。

Category能实现上面的需求,当然也有使用Category是需要注意的问题: 1、Category可以访问原始类的实例变量,但不能添加实例变量,如果想添加变量,那就通过继承创建子类来实现。 2、Category可以重载原始类的方法,不大不推荐这么做,这样会覆盖掉原始类的方法。如果确实要重载,那就通过继承创建子类来实现。 3、和普通接口有所区别的是,在Category的实现文件中的实例方法只要你不去调用它你可以不用实现所有声明的所有方法。

点击下载Demo

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017.03.23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档