zoukankan      html  css  js  c++  java
  • iOS开发系列-Category

    Category

    Category是OC中特有的语法。Category的作用
    * 可以在不修改原来类的基础上,为这个类扩充一些方法
    * 一个庞大的类可以分为多个模块开发
    * 一个庞大的类可以由多个人来编写,更有利于团队合作

    分类的使用

    分类也分为声明和实现两个部分

    // ClassName制定给哪个类扩充方法
    @interface ClassName (CategoryName)
    // 编写扩充方法声明...
    @end
    
    @implementation Person (CategoryName)
    // 编写扩充方法实现...
    @end
    

    创建分类的类名:原有类名称+分类名称

    分类的注意事项

    • 分类是用于给原有类添加方法,它只能添加方法,不能添加属性(成员变量)。

    • 分类中的@propery 只会生成setter/getter方法声明,不会声明下划线成员变量。

    • 分类中如果与原有类方法同名,会覆盖原有类的方法。(不需要导入分类头文件直接覆盖)

    • 如果多个分类中都有和原中同名的方法,那么会执行方法会调用最后一个参与编译的分类方法。

    类扩展

    类扩展也叫做匿名分类,是Category中的一个特例,没有名字。可以为某个类扩充一些私有的成员变量和方法
    类扩展写在.m中

    @interface 类名()
    
    @end
    

    给Person类添加一个类扩展

    #import "Person.h"
    @interface Person()
    {
        // 通过类扩展添加私有成员变量
        int _height;
    }
    /** 通过类扩展添加私有私有属性 自动生成setter跟getter声明跟实现 同时生成私有的下划线_age成员变量*/
    @property (nonatomic, assign) int age;
    
    // 通过类扩展声明私有方法声明
    - (void)run;
    @end
    
    @implementation Person
    // 通过类扩展声明私有方法实现
    - (void)run
    {
        
    }
    @end
    
  • 相关阅读:
    ASP.NET Core 微信支付(一)【统一下单 APIV3】
    ASP.NET Core 跨域
    快速排序
    希尔排序(插入式与位移式优化)
    选择排序和插入排序
    冒泡排序
    八皇后问题
    递归与迷宫回溯问题
    逆波兰计算器
    栈实现综合计算器
  • 原文地址:https://www.cnblogs.com/CoderHong/p/8832468.html
Copyright © 2011-2022 走看看