什么么是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
  • 对比分类,就少了一个分类名称,因此也有人称它为"匿名分类"
原文地址:https://www.cnblogs.com/saurik/p/4831762.html