什么么是Category

什么是Category

  • Category有很多种翻译:分类\类别\类目(一般叫分类)
  • Category是OC特有的语法,其他语言没有的语法
  • Category的作用
    • 可以在不修改原来类的基础上,为这个类扩充一些方法

书写格式

  • 声明

    • @interface 类名(分类名称)
    • @end
  • 实现
    • @implementation类名(分类名称)
    • @end

书写格式举例

  • 声明

    • #import "Student.h"
    • @interface Student (Study)
    • @end
  • 实现
    • #import "Student+Study.h"
    • @implementation Student (Study)
    • @end

使用Xcode创建分类

使用注意

  • 分类只能增加方法,不能增加成员变量
  • 分类可以访问原来类中的成员变量
  • 如果分类和原来类出现同名的方法,优先调用分类中的方法,原来类中的方法会被忽略
  • 方法调用的优先级(从高到低)
    • 分类(最后参与编译的分类优先)
    • 原来类
    • 父类

价值所在

  • 实现了类的相关方法的模块

    • 把不同的方法分配到了不同的分类文件中
    • 可以用一个分类来代表一类功能(一个模块)
  • 支持团队协作
    • 可以让团队内部的不同成员共同扩充某个类的功能
  • 可以为系统自带的类扩充功能

类扩展

  • 什么是类扩展

    • 可以为某个类扩充一些私有的成员变量和方法
    • 写在.m文件中
    • 英文名是Class Extension
  • 书写格式
    • @interface 类名()
    • @end
  • 对比分类,就少了一个分类名称,因此也有人称它为"匿名分类"
时间: 2024-10-28 10:47:33

什么么是Category的相关文章

category is in invalid format hint微信第三方平台将第三方提交的代码包提交审核出错

微信第三方平台通过接口https://api.weixin.qq.com/wxa/submit_audit?access_token=TOKEN将第三方提交的代码包提交审核时一直返回错误码85008的错误信息: category is in invalid format hint 查了半天是接口提交数据时json_encode时中文不能编码提交 将向微信的提交代码     $this->https_post($url,json_encode($postData)); 改为     $this->

OC中protocol、category和继承的区别

利用继承,多态是一个很好的保持"对扩展开放.对更改封闭"(OCP)的办法,也是最常见的一种方法.Objective C还支持另外两种语法来支持OCP:Protocol和Category.Protocol只能定义一套接口,而不能提供实现,变相的也是一种Abstract class的实现方式(oc 语法上本身不支持抽象基类).Category可以为类提供额外的接口和实现.那么到底三者(继承, Protocol,Category)在使用上到底有什么本质的区别呢?在我看来,protocol的作

Intent中的四个重要属性——Action、Data、Category、Extras

Intent作为联系各Activity之间的纽带,其作用并不仅仅只限于简单的数据传递.通过其自带的属性,其实可以方便的完成很多较为复杂的操作.例如直接调用拨号功能.直接自动调用合适的程序打开不同类型的文件等等.诸如此类,都可以通过设置Intent属性来完成. Intent主要有以下四个重要属性,它们分别为: Action:Action属性的值为一个字符串,它代表了系统中已经定义了一系列常用的动作.通过setAction()方法或在清单文件AndroidManifest.xml中设置.默认为:DE

ios 中Category类别(扩展类)专题总结

原创地址   http://www.code4blog.com/archives/294 类别 类别是一种为现有的类添加新方法的方式. 利用Objective-C的动态运行时分配机制,可以为现有的类添加新方法,这种为现有的类添加新方法的方式称为类别catagory,他可以为任何类添加新的方法,包括那些没有源代码的类. 类别使得无需创建对象类的子类就能完成同样的工作 一.创建类别 1.声明类别 声明类别与声明类的形式很相似 @interface  NSString(NumberConvenienc

Objective-C 之Category学习教程

在日常的开发中,可能会碰到这样的需求:给某个类增加方法.比如说,需要给NSString类增加一个打印的方法.当然,我们可以新建一个类比如TestString,并继承NSString类,在新的类TestString中实现 displayString方法.但是,这种方法有一个明显的缺陷是:只有 TestString类有该方法,NSString类的其他子类,比如 NSMutableString 不能使用该方法.能否给 NSString 类增加一个方法,让NSString以及NSString的所有子类都

wordpress去掉category怎么操作让url更简洁友好

用wordpress建站是比较流行的,全球将近25%的站点是用wordpress搭建的.有很多的模板.插件可以选择,当然最好还是能自己优化.URL固定链接就是之中一个基础的技巧.有网友问如何去掉url中的category,层级太多不太友好.可以根据ytkah设置,在[可选] 中的[分类目录前缀]那边填一个英文状态下的[.],文章的[自定义结构]可以设置为[/%category%/%post_id%.html],需要注意的是,做完这些操作一定要将之前的url重定向到新的网址,不然会出现很多的404

OC拓展(category)

1. 扩展类的功能Category提供了一种比继承(inheritance)更为简洁的方法来对class进行扩展,我们可以为任何已经存在的class添加方法(不包括数据成员)却不需要访问该class的实现文件.新添加的方法和原有的方法具有同等的地位,可以访问class的数据成员,并且完全植入到class的继承体系之中,子类同样会继承新添加的方法. 利用category对类进行扩展可以避免使类的继承体系过于臃肿,复杂,降低了维护成本.另外,新添加的方法如果和已经存在的方法具有相同的 prototy

iOS Category 和 Protocol 中的 Property 你们真的会了么?

一.property 合成存取器: @property的格式: 1 @property (修饰列表) 变量类型 变量名; Xcode4.4之前: @property使编译器自定生成set/get方法声明. @synthesize自动生成set/get方法的实现 @synthesize还会自动生成私有成员变量 Xcode4.4以后: 不用再写@synthesize,编译器通过@property就能给我们生成set/get方法的声明和实现,默认生成成员变量:_propertyName 用@prope

OC基础--分类(category) 和 协议(protocol)

OC 中的category分类文件相当于 C#中的部分类:OC 中的protocol协议文件(本质是头文件)相当于 C#中的接口.今天就简单说明一下OC中的这两个文件. 由于视频中的Xcode版本低,导致了分类文件和协议文件没有找到,最后百度得知: 如图:Xcode 7.2版本中的category文件和protocol文件都归类到了Objective-C File 中   一.category文件: 作用:可以扩展自定义类,或者系统类.下面的实例,是扩展了NSString 类,在类中扩展了计算字

android之android.intent.category.DEFAULT的用途和使用

转载(http://blog.csdn.net/jason0539/article/details/10049899) 1.要弄清楚这个问题,首先需要弄明白什么是implicit(隐藏) intent什么是explicit(明确) intent. Explicit Intent明确的指定了要启动的Acitivity ,比如以下Java代码: Intent intent= new Intent(this, B.class): Implicit Intent没有明确的指定要启动哪个Activity