• Objective-C之Category的使用


    Category

    分类相关

    category是OC的特有的语法

     

    // 分类的声明

    @interface ClassName (CategoryName)
    
    NewMethod; //在类别中添加方法
            //不允许在类别中添加变量
    @end
    • ClassName: 需要给哪个类扩充方法
    • CategoryName: 分类的名称
    • NewMethod: 扩充的方法

    // 分类的实现

    @implementation ClassName(CategoryName)
    
    NewMethod
    ... ...
    @end

    ClassName: 需要给哪个类扩充方法
    CategoryName: 分类的名称
    NewMethod: 扩充的方法

    注意:

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

    @interface Person (NJ)
    //{
    //    double _height;
    //}

    2.分类中的@property, 只会生成setter/getter方法的声明, 不会生成实现以及私有的成员变量

    //@property (nonatomic, assign) double height;
    验证方式:在main函数中调用property声明的属性,并且赋值,发现会奔溃

    3.可以在分类中访问所有类中的.h中的属性

    4.原类中和分类中有相同的方法,会调用分类中的方法,也就是说回忽略原类中的方法,所以开发建议,不要在分类写出原类中同名的方法。

    5.如果多个分类中都有和原类中同名的方法,那么调用该方法的时候执行谁由编译器决定,会执行最后参与编译的一个分类。 怎么看分类谁先编译呢?

    所以不建议在分类声明实现很多和原类同名的方法。

    类扩展(Class Extension)

    匿名分类或者匿名扩展:没有名字的分类

    延展类别有称为扩展(Extendsion),是Category的一个特例。

    • 主要的作用:为某个类扩充一些私有的成员变量和方法
      • 写在.m文件中
      • 英文名是Class Extension

    类扩展书写格式

    @interface 类名 ()
    @end

    对比分类, 就少了一个分类名称,因此也有人称它为”匿名分类”


  • 相关阅读:
    Flutter form 的表单 input
    FloatingActionButton 实现类似 闲鱼 App 底部导航凸起按钮
    Flutter 中的常见的按钮组件 以及自 定义按钮组件
    Drawer 侧边栏、以及侧边栏内 容布局
    AppBar 自定义顶部导航按钮 图标、颜色 以及 TabBar 定义顶部 Tab 切换 通过TabController 定义TabBar
    清空路由 路由替换 返回到根路由
    应对ubuntu linux图形界面卡住的方法
    [转] 一块赚零花钱
    [转]在树莓派上搭建LAMP服务
    ssh保持连接
  • 原文地址:https://www.cnblogs.com/goodboy-heyang/p/4931342.html
Copyright © 2020-2023  润新知