zoukankan      html  css  js  c++  java
  • 【Objective-C 篇】 ☞ 7. Category、Extension

    分类 Category

      分类只能给类扩充方法,不能添加属性!

    1.  什么是Category
      • Category有很多种翻译:分类 / 类别 / 类目(一般叫分类)
      • 分类是一个类的补充,是类的一部分。
      • Category的作用:
        • 可以在不修改原来类的基础上,为这个类扩充一些方法。(使用继承也可以,在子类中扩充父类没有的方法)
        • 一个庞大的类可以分模块开发
        • 一个庞大的类可以由多个人来编写,更有利于团队合作
      • 常见用法
        • 将一个类分成若干个部分,便于阅读和管理
        • 给一个已有的类通过定义分类的方式增加功能(经常给系统的类扩充方法)
    2.  语法格式

    @interface 类名 (分类名)

    //声明扩充的方法

    @end

    @implementation 类名 (分类名)

    //实现扩充的方法

    @end

      创建一个分类:

        

      分类的注意事项:

    • 分类是用于给原有类添加方法的, 它只能添加方法, 不能添加属性(成员变量)
    • 分类中定义@property属性, 只会生成setter/getter方法的声明,不会生成方法的实现和实例变量。
    • 可以在分类中访问原有类中.h中的属性

        方法的调用顺序: 1.分类 —> 2.本类  —> 3.父类

    扩展 Extension

      匿名分类    在类的.m文件中定义扩展,在扩展中定义私有属性和私有方法。

    1.  概念
      • Extension有很多种翻译:扩展 / 延展 / 匿名分类(一般叫扩展)
      • 扩展是一特殊的分类, 没有分类名。
      • 可以在扩展中定义实例变量,定义属性,增加方法。
    2.  语法格式

    @interface 类名 ( )

    //声明私有的成员变量

    //声明私有的属性

    //声明私有的方法

    @end

    • 扩展最常用的方式是:

        在类的.m文件中定义扩展,在扩展中定义私有的属性和声明私有的方法。

        在UI中常用扩展来定义私有属性!

    Category练习:

      

  • 相关阅读:
    Unity WebGL打包发布报错
    Makefile:4: *** missing separator. Stop.
    Unity使用VSCode没有代码提示/代码无法折叠
    Unreal Engine is exiting due to D3D device being lost
    使用Doxygen生成UE4的chm格式API文档
    'UTextRenderComponent::SetText': Passing text as FString is deprecated, please use FText instead (likely via a LOCTEXT)
    f4v格式视频播放失败
    Unity自定义Button组件Transition
    mysql安装步骤
    ansible 安装
  • 原文地址:https://www.cnblogs.com/bossren/p/6428746.html
Copyright © 2011-2022 走看看